1.1.3 • Published 2 years ago

@logicamente.info/react-lgmt-input v1.1.3

Weekly downloads
1
License
MIT
Repository
github
Last release
2 years ago

React-Lgmt-Input

Travis npm package

Este componente cria inputs mascarados para alguns dados utilizados em cadastros aqui no Brasil.

Ele também da uma base para a criação de inputs personalizados com suas próprias máscaras através de expressões regulares e permite determinar uma função de validação para o input.

Para uma demonstração, faça o download e execute yarn start.

Instalação

$ npm i -S @logicamente.info/react-lgmt-input # NPM user
$ yarn add @logicamente.info/react-lgmt-input # NPM user

Uso

import React from 'react';
import LgmtInput from '@logicamente.info/react-select-brasil';

export default class Demo extends React.Component {
  render() {
    return (
      <LgmtInput.CPF
        value={this.state.cpf}
        onChange={(e) => this.setState({ cpf: e.target.value })}>
    );
  }
}

Tipos implementados

ComponenteTemática
LgmtInput.CommonInputComponente base para a criação de novos componentes input, não é possível renderizar este componente diretamente
LgmtInput.AgenciaBancariaInput formatado para número de agências bancárias
LgmtInput.BoletoBancárioInput formatado para números de boletos com 47 dígitos
LgmtInput.CEPInput formatado para CEP brasileiro
LgmtInput.CNPJInput formatado para número de registro de pessoa jurídica
LgmtInput.ContaBancariaInput formatado para contas bancárias
LgmtInput.ConvenioBancarioInput formatado para números de boletos com 48 dígitos (água, luz, telefone...)
LgmtInput.CPFInput formatado para número de registro de pessoa física
LgmtInput.DocumentoInput formatado para CPF ou CNPJ, adaptando-se de acordo com a quantidade dígitos inseridos
LgmtInput.MoedaInput formatado para valores monetários, com duas casas decimais por padrão (prop digits="2")
LgmtInput.TelefoneInput formatado para telefones com DDD

Props

Este componente é um DOM Input padrão do HTML de texto, portanto todas as propriedades de um inputtype="text" são aplicáveis a este componente como, por exemplo, required.

Como criar seus próprios inputs

Para criar inputs com suas próprias opções e formatos, crie uma classe que extenda CommonInput e defina as propriedades conforme tabela a seguir.

  masksRegex = /(^(\d)|(\d)(\d)|(\d)(\d)(\d)|(\d)(\d)(\d)(\d)$)/g
  masksReplacement = ["$2", "$4.$5", "$7.$8.$9", "$11.$12.$12-$13"]
  length = 4
  pattern = /^(\d\.){3}\d$/
  invalidMessage = "Preencha corretamente."
  const v = this.state.value
              .replace(/\D/g, '')
              .split('').map((e) => parseInt(e));
  const ultimoDigito = v.pop();
  const somaDigitos = v.reduce((acc, cur) => acc + cur);
  return somaDigitos === ultimoDigito;

Exemplo completo de classe

import LgmtInput from '@logicamente.info/react-lgmt-input';

export default class MeuInput extends LgmtInput.CommonInput {

  masksRegex = /(^(\d)|(\d)(\d)|(\d)(\d)(\d)|(\d)(\d)(\d)(\d)$)/g;

  masksReplacement = ["$2", "$4.$5", "$7.$8.$9", "$11.$12.$12-$13"];

  length = 4;

  pattern = /^(\d\.){3}\d$/;

  invalidMessage = "Preencha corretamente.";

  validator: () => {
    const v = this.state.value
                .replace(/\D/g, '') // remove a mascara
                .split('').map((e) => parseInt(e)); // transforma em um vetor de int
    const ultimoDigito = v.pop(); // retira o ultimo digito
    const somaDigitos = v.reduce((acc, cur) => acc + cur); // soma os tres primeiros
    return somaDigitos === ultimoDigito;
  }

}
1.1.1

2 years ago

1.1.0

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

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