(function (window, document) { 'use strict'; const masks = { cpf: function (v) { const d = String(v || '').replace(/\D/g, ''); if (d.length !== 11) return v; return d.slice(0, 3) + '.***.***-' + d.slice(9); }, passport: function (v) { const s = String(v || ''); if (s.length <= 3) return s; return '*'.repeat(s.length - 3) + s.slice(-3); } }; function getRealValue(input) { if (input.dataset.realValue === undefined) { input.dataset.realValue = input.value || ''; } return input.dataset.realValue; } function init(root) { const container = root || document; container.querySelectorAll('[data-sensitive-mask-toggle]').forEach(function (input) { if (input.dataset.sensitiveMaskInitialized === 'true') return; const type = input.getAttribute('data-sensitive-mask'); const maskFn = masks[type]; if (!maskFn) return; // O botao alvo pode ser o next sibling (padrao input-group) // ou indicado por data-sensitive-mask-toggle="#idDoBotao" let btn; const selector = input.getAttribute('data-sensitive-mask-toggle'); if (selector && selector !== 'next') { btn = document.querySelector(selector); } else { const group = input.closest('.input-group'); btn = group ? group.querySelector('.js-toggle-mask') : null; } if (!btn) return; input.dataset.sensitiveMaskInitialized = 'true'; const icon = btn.querySelector('i'); input.readOnly = true; // Estado inicial: mascarado input.value = maskFn(getRealValue(input)); input.dataset.masked = 'true'; if (icon) icon.className = 'far fa-eye'; btn.addEventListener('click', function (e) { e.preventDefault(); const isMasked = input.dataset.masked === 'true'; input.value = isMasked ? getRealValue(input) : maskFn(getRealValue(input)); input.dataset.masked = isMasked ? 'false' : 'true'; if (icon) { icon.className = isMasked ? 'far fa-eye-slash' : 'far fa-eye'; } btn.setAttribute('title', isMasked ? 'Ocultar' : 'Exibir'); btn.setAttribute('aria-label', isMasked ? 'Ocultar' : 'Exibir'); }); }); } window.SensitiveMask = { init: init }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function () { init(); }); } else { init(); } })(window, document);