New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@logicamente.info/react-lgmt-input

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@logicamente.info/react-lgmt-input

Componente React para criação de inputs formatados e validados para dados pré-definidos utilizados no Brasil

latest
Source
npmnpm
Version
1.1.3
Version published
Maintainers
1
Created
Source

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 input[type="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.

PropriedadeDescriçãoExemplo
masksRegexDemostra através de expressões regulares a evolução da aplicação da máscara
  masksRegex = /(^(\d)|(\d)(\d)|(\d)(\d)(\d)|(\d)(\d)(\d)(\d)$)/g
masksReplacementInforma como os grupos capturados pelas expressões regulares vão compor a máscara
  masksReplacement = ["$2", "$4.$5", "$7.$8.$9", "$11.$12.$12-$13"]
lengthTamanho máximo permitido para o input desconsiderando os caracteres da máscara
  length = 4
patternExpressão regular que validará o valor final do input depois de aplicada a máscara
  pattern = /^(\d\.){3}\d$/
invalidMessageMensagem que será exibida caso o valor do input seja inválido utilizando a validação padrão do HTML5 (anterior ao evento submit)
  invalidMessage = "Preencha corretamente."
validatorUma função opcional executada durante a validação de pattern que avalia o valor do input para determinar sua validade
  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;
  }

}

Keywords

react component

FAQs

Package last updated on 17 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts