3.3.12 • Published 4 months ago

the-mask-input v3.3.12

Weekly downloads
195
License
MIT
Repository
-
Last release
4 months ago

the-mask-input

The mask input é um <input /> para React com máscaras pré definidas para formatos comuns em formulários brasileiros. Não tem o formato que você quer? Só passar um Array<string|RegExp> ou uma função (text: string) => Array<string|RegExp>

Instalação

Esse processo aqui todo mundo já tá acostumado

npm i the-mask-input #ou se você usa yarn...
yarn add the-mask-input

Como utilizar?

import Input, { Masks } from "the-mask-input";
import React, { useState, useCallback } from "react";

const Field = ({ mask, title }: { mask: Masks; title: string }) => {
	const [value, setValue] = useState("");
	const onChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.value), []);
	return (
		<div>
			<label>
				{title}:
				<Input style={{ width: "100%" }} mask={mask} onChange={onChange} value={value} />
			</label>
		</div>
	);
};

const App = () => (
	<>
		<Field mask="cpf" title="Informe seu CPF"/>
	</>
)

Por padrão, the-input-mask possui algumas máscaras pre-definidas:

type Masks = "cellphone" | "cellTelephone" | "cep" | "cnpj" | "color" | "cpf" | "cpfCnpj" | "creditCard" | "currency" | "date" | "isoDate" | "pis" | "telephone";

Atenção especial para "cellTelephone" e "cpfCnpj" que são máscaras que mudam os valores conforme o usuário digita

  • cellTelephone irá de (00) 0000-0000 para (00) 90000-0000 caso o usuário informe o nono dígito.
  • cpfCnpj irá de 000.000.000-00 para 00.000.000/0000-00 caso o usuário informe 12 dígitos ou mais

Caso nenhuma dessas te atenda, não fique triste, basta criar sua própria máscara com um Array de string ou RegExp. Se for um valor dinâmico, você pode passar uma função (text: string) => Array<string|RegExp> para criar sua máscara. Se liga só:

import Input, { Masks, CustomInputProps } from "the-mask-input";
import React, { useState, useCallback } from "react";

// Máscara com um número + 3 letras
const customMask = [/\d/, /[A-Za-z]/, /[A-Za-z]/, /[A-Za-z]/];

const CustomInput: React.FC<CustomInputProps> = (props) => {
	const [value, setValue] = useState("");
	const onChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.value), []);
	return (
		<Input {...props} mask={customMask} onChange={onChange} value={value} />
	);
};

Você não precisa sacar tudo de regex pra criar sua máscara, vou passar uma colinha pra você:

  • /\d/: Número: 0-9
  • /[0-9]/: Número de 0 a 9, o número pós "-" será o máximo permitido
  • /[2-5]/: Número de 0 a 9, como exemplo do mínimo permitido sendo 2 e do máximo permitido sendo 5
  • /[A-Z]/: Letras de A até Z (maiúsculo), a letra após "-" será a maior permitida
  • /[A-F]/: Letras de A até F (maiúsculo), como exemplo do máximo permitido sendo F
  • /[!#$%*&()=+-]/: Alguns caracteres especiais, nesse caso, lembre-se de colocar o "-" por último para não criar um range de caracteres

ToDo

  • Criar testes
  • Criar uma função para gerar máscaras e ajudar os amigos desenvolvedores que não gostam de regex
3.3.11

4 months ago

3.3.12

4 months ago

3.3.9-5

5 months ago

3.3.9-4

5 months ago

3.3.9-2

5 months ago

3.3.9-3

5 months ago

3.3.9-1

5 months ago

3.3.7

5 months ago

3.3.8-0

5 months ago

3.3.6

5 months ago

3.3.2-1

6 months ago

3.3.5

5 months ago

3.3.4

5 months ago

3.3.3

6 months ago

3.3.2

6 months ago

3.1.8

10 months ago

3.2.2

9 months ago

3.2.1

9 months ago

3.2.0

10 months ago

3.1.7-1

10 months ago

3.1.7-0

10 months ago

3.3.1

7 months ago

3.3.0

8 months ago

3.1.7

10 months ago

3.1.5

11 months ago

3.1.6-0

10 months ago

3.0.8

1 year ago

3.0.7

1 year ago

3.1.3

1 year ago

3.1.2

1 year ago

3.1.1

1 year ago

3.1.0

1 year ago

3.1.4

1 year ago

3.0.4

1 year ago

3.0.3

1 year ago

3.0.2

1 year ago

3.0.1

1 year ago

3.0.6

1 year ago

3.0.0

2 years ago

2.6.0

2 years ago

2.5.2

3 years ago

2.5.1

3 years ago

2.5.0

3 years ago

2.4.1

3 years ago

2.4.3

3 years ago

2.4.2

3 years ago

2.4.5

3 years ago

2.4.4

3 years ago

2.4.0

3 years ago

2.3.4

3 years ago

2.3.6

3 years ago

2.3.5

3 years ago

2.3.3

3 years ago

2.3.2

3 years ago

2.3.1

4 years ago

2.3.0

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.14

4 years ago

2.1.13

4 years ago

2.1.12

4 years ago

2.1.9

4 years ago

2.1.6

4 years ago

2.1.10

4 years ago

2.1.8

4 years ago

2.1.11

4 years ago

2.1.7

4 years ago

2.1.5

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago