# BignumberInput

![Status](https://img.shields.io/badge/status-deprecated-red)

> **Descontinuado** — Use a diretiva [`sNumericMask`](../numeric-mask/README.md) em novos projetos.

Diretiva de máscara para campos de entrada de números de grande precisão. Permite configurar precisão total, casas decimais, separadores e sinal negativo.

## Quando usar

- Manutenção de formulários legados que já utilizam `sBignumberInput`

## Quando não usar

- Em novos desenvolvimentos — use `sNumericMask` que é a diretiva recomendada e mantida ativamente
- Quando não há necessidade de controle de precisão total de dígitos — `sNumericMask` com `maxDecimalPlaces` atende a maioria dos casos

## Migração

```html
<!-- Antes -->
<input sBignumberInput [precision]="15" [scale]="2" [(ngModel)]="value" />

<!-- Depois -->
<input sNumericMask [maxDecimalPlaces]="2" [(ngModel)]="value" />
```

## Instalação (legado)

```typescript
import { BignumberInputModule } from '@seniorsistemas/angular-components/bignumber-input';

@NgModule({
  imports: [BignumberInputModule],
})
export class MeuModule {}
```

## Uso básico

```html
<input sBignumberInput [precision]="15" [scale]="2" [allowNegative]="false" [(ngModel)]="valor" />
```

## API

### Inputs

| Propriedade | Tipo | Padrão | Obrigatório | Descrição |
|-------------|------|--------|:-----------:|-----------|
| `precision` | `number` | `15` | não | Total de dígitos significativos aceitos (parte inteira + decimal) |
| `scale` | `number` | `0` | não | **Descontinuado** — use `minDecimalPlaces`/`maxDecimalPlaces`. Casas decimais |
| `minDecimalPlaces` | `number` | `0` | não | Mínimo de casas decimais exibidas |
| `maxDecimalPlaces` | `number` | `0` | não | Máximo de casas decimais aceitas |
| `allowNegative` | `boolean` | `true` | não | Permite entrada de valores negativos |
| `decimalSeparator` | `string` | locale | não | Separador decimal personalizado |
| `thousandSeparator` | `string` | locale | não | Separador de milhar (preferir `thousandSeparator`) |
| `thousandsSeparator` | `string` | `undefined` | não | **Descontinuado** — use `thousandSeparator` |
| `placeholder` | `string` | `undefined` | não | Texto de placeholder do campo |
| `alignTo` | `'left' \| 'right'` | `'right'` | não | **Descontinuado** — não tem mais efeito; alinhamento é sempre `right` |

### Outputs

| Evento | Tipo | Descrição |
|--------|------|-----------|
| `pasteRejected` | `OutputEmitterRef<string>` | Emitido quando uma colagem é rejeitada por exceder `precision` |

### Tipos

```typescript
/** @deprecated */
enum BignumberAlignmentOption {
  RIGHT = 'right',
  LEFT = 'left',
}
```

## Exemplos

### Campo inteiro

```html
<input
  sBignumberInput
  [precision]="15"
  [scale]="0"
  [(ngModel)]="valor"
/>
```

### Campo com 2 casas decimais

```html
<input
  sBignumberInput
  [precision]="15"
  [scale]="2"
  [(ngModel)]="valor"
/>
```

### Somente positivos, sem separador de milhar

```html
<input
  sBignumberInput
  [precision]="10"
  [scale]="2"
  [allowNegative]="false"
  thousandsSeparator=""
  [(ngModel)]="valor"
/>
```

## Acessibilidade

- A diretiva se aplica a um `<input>` nativo — certifique-se de associar um `<label>` via `for` ou `aria-label`
- O campo recebe `type="tel"` automaticamente para exibir teclado numérico em dispositivos móveis

## Componentes relacionados

- [`sNumericMask`](../numeric-mask/README.md) — substituto recomendado, ativamente mantido
