directus-brazilian-pix
Version:
Brazilian PIX key extensions for Directus - Complete PIX key input with type selection and validation (CPF, CNPJ, Phone, Email)
221 lines (155 loc) • 5.53 kB
Markdown
# Extensão de Chave PIX Brasileira para Directus
Extensão bundle para Directus focada na comunidade brasileira, com interface de entrada e display para chaves PIX com validação, formatação e experiência de uso otimizada.
## O que esta extensão faz
### Interface de Chave PIX
- Suporte completo aos tipos de chave:
- CPF
- CNPJ
- Telefone (com ou sem +55)
- E-mail
- EVP (chave aleatória em formato UUID)
- Detecção automática do tipo da chave
- Validação em tempo real por tipo
- Formatação automática durante digitação
- Seletor de tipo configurável
- Armazenamento estruturado com `key` e `type`
### Display de Chave PIX
- Exibição formatada por tipo
- Ícone do tipo de chave (opcional)
- Cópia para área de transferência com feedback visual
- Máscara parcial para CPF/CNPJ (opcional)
- Compatibilidade com valores antigos (string simples) e novos (JSON)
## Instalação
### Via npm
```bash
npm install directus-brazilian-pix
```
### Instalação manual
1. Baixe a release mais recente.
2. Extraia para a pasta de extensões do Directus.
3. Reinicie sua instância do Directus.
## Uso
### Configurando a interface
1. Acesse `Settings > Data Model`.
2. Selecione a coleção e o campo (tipo string).
3. Escolha a interface `Brazilian PIX Key`.
4. Ajuste as opções conforme necessário.
#### Opções da interface
| Opção | Tipo | Padrão | Descrição |
|------|------|--------|-----------|
| Placeholder | String | `Digite ou cole sua chave PIX` | Placeholder do input |
| Disabled | Boolean | `false` | Desabilita o campo |
| Required | Boolean | `false` | Torna o campo obrigatório |
| Auto-detect PIX Key Type | Boolean | `true` | Detecta automaticamente o tipo da chave |
| Allowed PIX Key Types | Array | Todos | Restringe tipos permitidos (`cpf`, `cnpj`, `phone`, `email`, `evp`) |
| Default PIX Key Type | String | `cpf` | Tipo padrão ao criar novo item |
| Show Type Selector | Boolean | `true` | Mostra/oculta seletor de tipo |
| Validate Key Format | Boolean | `true` | Ativa/desativa validação por tipo |
### Configurando o display
1. Abra o layout da coleção.
2. Selecione o campo da chave PIX.
3. Escolha o display `Brazilian PIX Key Display`.
4. Ajuste as opções.
#### Opções do display
| Opção | Tipo | Padrão | Descrição |
|------|------|--------|-----------|
| Show Type Badge | Boolean | `true` | Exibe ícone do tipo de chave |
| Format Key | Boolean | `true` | Aplica formatação visual |
| Hide Partial Key | Boolean | `false` | Mascara parcialmente CPF/CNPJ |
| Enable Copy to Clipboard | Boolean | `true` | Permite copiar a chave ao clicar |
| Show QR Code Option | Boolean | `false` | Exibe botão para modal de QR Code (placeholder) |
## Tipos de chave suportados
| Tipo | Descrição | Exemplo |
|------|-----------|---------|
| CPF | Pessoa física | `123.456.789-01` |
| CNPJ | Pessoa jurídica | `12.345.678/0001-90` |
| Telefone | Celular/fixo | `+55 (11) 99999-9999` |
| E-mail | Endereço de e-mail | `usuario@email.com` |
| EVP | Chave aleatória (UUID) | `123e4567-e89b-12d3-a456-426614174000` |
## Regras de validação
### CPF
- Valida os 11 dígitos
- Rejeita sequências repetidas
- Calcula e valida os dois dígitos verificadores
### CNPJ
- Valida os 14 dígitos
- Rejeita sequências repetidas
- Calcula e valida os dois dígitos verificadores
### Telefone
- Aceita números nacionais com 10 ou 11 dígitos
- Aceita prefixo `55` (país)
- Valida DDD brasileiro
- Para 11 dígitos, exige `9` como terceiro dígito
### E-mail
- Validação de formato via regex
- Normalização para minúsculas e trim
### EVP
- Validação de UUID (versões 1-5)
- Normalização para minúsculas e trim
## Formato de armazenamento
As chaves são salvas como string JSON:
```json
{
"key": "12345678901",
"type": "cpf"
}
```
### Exemplos
```json
{"key":"12345678901","type":"cpf"}
{"key":"12345678000190","type":"cnpj"}
{"key":"5511999999999","type":"phone"}
{"key":"user@example.com","type":"email"}
{"key":"123e4567-e89b-12d3-a456-426614174000","type":"evp"}
```
## Desenvolvimento
### Requisitos
- Node.js `20.19+`
- Directus `11+`
### Comandos
```bash
# instalar dependências
npm install
# build da extensão
npm run build
# validação da extensão
npm run validate
# desenvolvimento (watch)
npm run dev
# link local para instância Directus
npm run link
```
## Funções utilitárias (`src/utils/pix-validators.ts`)
### Formatação
- `formatCPF(value: string)`
- `formatCNPJ(value: string)`
- `formatPhone(value: string)`
- `formatPixKey(value: string, type: PixKeyType)`
### Validação
- `isValidCPF(cpf: string)`
- `isValidCNPJ(cnpj: string)`
- `isValidPhone(phone: string)`
- `isValidEmail(email: string)`
- `isValidEVP(value: string)`
- `validatePixKey(value: string, type: PixKeyType)`
### Utilitários
- `detectPixKeyType(value: string)`
- `cleanCPF(value: string)`
- `cleanCNPJ(value: string)`
- `cleanPhone(value: string)`
- `cleanPixKey(value: string, type: PixKeyType)`
## Compatibilidade de navegador
- Navegadores modernos: cópia via Clipboard API
- Fallback para navegadores legados: `document.execCommand('copy')`
## Contribuição
Contribuições são bem-vindas via Pull Request.
## Licença
MIT. Veja o arquivo `LICENSE`.
## Suporte
Abra uma issue em:
`https://github.com/brunribeiro/directus-brazilian-pix/issues`
## Roadmap
- Geração real de QR Code PIX
- Internacionalização
- Mais opções de formato de cópia
- Testes integrados mais completos