Sistema de máscaras para inputs em JavaScript puro, com validação, internacionalização e acessibilidade. Substitui jQuery Mask Plugin com performance superior e zero dependências.
- 🚀 Performance Superior: JavaScript puro sem dependências externas
- ✅ Validação Oficial: Algoritmos da Receita Federal para CPF/CNPJ
- 🌍 Internacionalização: Suporte para português, inglês e espanhol
- ♿ Acessibilidade: Compatível com leitores de tela (ARIA)
- 📱 Responsivo: Funciona em desktop e mobile
- 🔧 Flexível: Fácil customização e extensão
npm install vanilla-mask-jsOu copie o arquivo src/index.js para seu projeto.
import { VanillaMask, validateCPF } from "vanilla-mask-js";
// CPF com validação
new VanillaMask("cpf-input", "cpf", {
validator: validateCPF,
locale: "pt",
});
// CEP simples
new VanillaMask("cep-input", "cep");const { VanillaMask, validateCPF } = require("vanilla-mask-js");<script src="path/to/vanilla-mask.min.js"></script>
<script>
new window.VanillaMask("cpf-input", "cpf", {
validator: window.validateCPF,
});
</script>| Tipo | Formato | Exemplo | Validação |
|---|---|---|---|
cpf |
000.000.000-00 |
123.456.789-01 |
✅ Oficial |
cnpj |
00.000.000/0000-00 |
12.345.678/0001-95 |
✅ Oficial |
cep |
00000-000 |
12345-678 |
- |
phone |
(00) 00000-0000 |
(11) 98765-4321 |
- |
date |
00/00/0000 |
31/12/2025 |
- |
new VanillaMask("input-id", "cpf", {
// Limpar campo se inválido no blur
clearIfNotMatch: true,
// Placeholder personalizado
placeholder: "",
// Função de validação customizada
validator: validateCPF,
// Mensagem de erro customizada
errorMessage: "CPF inválido",
// Idioma (pt, en, es)
locale: "pt",
});import {
formatCPF,
formatCNPJ,
formatCEP,
formatPhone,
formatDate,
validateCPF,
validateCNPJ,
removeNonDigits,
applyCustomMask,
getLocalizedMessage,
detectLocale,
} from "vanilla-mask-js";
// Formatação direta
const cpf = formatCPF("12345678901"); // "123.456.789-01"
// Validação
const isValid = validateCPF("529.982.247-25"); // true
// Máscara customizada
const custom = applyCustomMask(
"123456789",
/(\d{3})(\d{3})(\d{3})/,
"$1.$2.$3"
);O sistema detecta automaticamente o idioma do navegador ou pode ser configurado manualmente:
// Detecção automática
new VanillaMask("cpf", "cpf", { validator: validateCPF });
// Idioma específico
new VanillaMask("cpf", "cpf", {
validator: validateCPF,
locale: "en", // ou 'es', 'pt'
});- pt: Português (Brasil)
- en: English
- es: Español
O sistema implementa atributos ARIA automaticamente:
aria-invalid="true"quando há erro de validaçãoaria-describedby="error-id"para associar mensagens de errorole="alert"nas mensagens de erroaria-live="polite"para atualizações dinâmicas
npm testvanilla-mask-js/
├── src/
│ └── index.js # Código principal
├── dist/
│ └── vanilla-mask.min.js # Versão minificada (opcional)
├── tests/
│ └── vanilla-masks.test.js # Testes unitários
├── README.md # Esta documentação
├── package.json # Metadados do pacote
└── LICENSE # Licença MIT
Contribuições são bem-vindas! Sinta-se à vontade para:
- Reportar bugs
- Sugerir novas funcionalidades
- Enviar pull requests
MIT - Veja o arquivo LICENSE para detalhes.
Inspirado em bibliotecas como jQuery Mask Plugin, VMasker e Cleave.js, mas implementado do zero para máxima performance e compatibilidade moderna.
Desenvolvido por: José Aparecido Ramos Junior Repositório: GitHub