analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
44 lines • 1.63 kB
TypeScript
import { ComponentProps } from 'react';
import Input from '../Input/index';
import { MASK_TYPE } from '../utils/brazilianFormatters';
type InputProps = ComponentProps<typeof Input>;
/**
* Props do MaskedInput.
*
* Extende as props do `Input` adicionando o `mask` que identifica o tipo de
* mascara a aplicar (CNPJ, CPF, Telefone ou CEP).
*
* O tipo de `value` e estreitado para `string | undefined` porque as mascaras
* sao operacoes de string — aceitar `number` ou `readonly string[]` (do
* `InputHTMLAttributes`) levaria a comportamento inconsistente.
*/
export type MaskedInputProps = {
/** Tipo da mascara a ser aplicada */
mask: MASK_TYPE;
/** Valor mascarado (string). Pode ser passado cru ou ja mascarado (idempotente). */
value?: string;
} & Omit<InputProps, 'value'>;
/**
* MaskedInput - wrapper do Input com mascara progressiva aplicada
* automaticamente no onChange.
*
* O valor recebido pelo consumidor no `onChange` ja vem com a mascara aplicada.
* Alem disso, se um `value` controlado for passado "cru" (sem mascara), o
* componente formata para exibicao. Como as mascaras sao idempotentes,
* repassar o valor mascarado tambem funciona.
*
* @example
* ```tsx
* <MaskedInput
* label="CNPJ"
* mask={MASK_TYPE.CNPJ}
* variant="rounded"
* placeholder="00.000.000/0000-00"
* value={cnpj}
* onChange={(e) => setCnpj(e.target.value)}
* />
* ```
*/
declare const MaskedInput: import("react").ForwardRefExoticComponent<Omit<MaskedInputProps, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
export default MaskedInput;
//# sourceMappingURL=MaskedInput.d.ts.map