-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmasker.min.js
7 lines (7 loc) · 5.96 KB
/
masker.min.js
1
2
3
4
5
6
7
/*!
* MaskerJS v1.3 - Vanilla Javascript mask plugin to input form elements
* Copyright 2019-2024 Silvio Delgado (https://github.com/silviodelgado)
* Licensed under MIT (https://opensource.org/licenses/MIT)
* https://github.com/silviodelgado/maskerjs
*/
(function(e,a){"function"==typeof define&&define.amd?define([],a(e)):"object"==typeof exports?module.exports=a(e):e.Masker=a(e)})("undefined"!=typeof global?global:this.window||this.global,function(e){"use strict";String.prototype.replaceAll=function(e,a){let t=this;for(;t.indexOf(e)>=0;)t=t.replace(e,a);return t};const a={cpf:function(e){return e.value.replace(/\D/g,"").replace(/(\d{3})(\d)/,"$1.$2").replace(/(\d{3})(\d)/,"$1.$2").replace(/(\d{3})(\d{1,2})/,"$1-$2").replace(/(-\d{2})\d+?$/,"$1")},cnpj:function(e){return e.value.replace(/\D/g,"").replace(/(\d{2})(\d)/,"$1.$2").replace(/(\d{3})(\d)/,"$1.$2").replace(/(\d{3})(\d{1,4})/,"$1/$2").replace(/(\/\d{4})(\d{1,2})/,"$1-$2").replace(/(-\d{2})\d+?$/,"$1")},cnpj_alpha:function(e){return e.value.replace(/[^A-Za-z0-9]/gi,"").replace(/([A-Za-z0-9]{2})([A-Za-z0-9])/,"$1.$2").replace(/([A-Za-z0-9]{3})([A-Za-z0-9])/,"$1.$2").replace(/([A-Za-z0-9]{3})([A-Za-z0-9]{1,4})/,"$1/$2").replace(/(\/[A-Za-z0-9]{4})([A-Za-z]{1,2})/,"$1-").replace(/(\/[A-Za-z0-9]{4})([0-9]{1,2})/,"$1-$2").replace(/(\-[0-9]{1,2})(.*)?$/,"$1")},cpf_cnpj:function(e){let t=e.value==e.value.replace(/\D/g,"");return!t&&e.value.length<=14||t&&11==e.value.length?a.cpf(e):a.cnpj(e)},cpf_cnpj_alpha:function(e){let t=e.value==e.value.replace(/[^A-Za-z0-9]/gi,""),r=e.value.match(/[A-Za-z]/gi);return!r&&(!t&&e.value.length<=14||t&&11==e.value.length)?a.cpf(e):a.cnpj_alpha(e)},cep:function(e){return e.value.replace(/\D/g,"").replace(/(\d{5})(\d)/,"$1-$2").replace(/(-\d{3})\d+?$/,"$1")},phone:function(e){return e.value.replace(/\D/g,"").replace(/(\d{1,2})/,"($1").replace(/\((\d{2})(\d{1})/,"($1) $2").replace(/(\d{4})(\d{1,4})/,"$1-$2").replace(/(\d{4})-(\d)(\d{4})/,"$1$2-$3").replace(/(-\d{4})\d+?$/,"$1")},date:function(e){return e.value.replace(/\D/g,"").replace(/(\d{2})(\d)/,"$1/$2").replace(/(\d{2})(\d{1,4})/,"$1/$2").replace(/(\/\d{4})\d+?$/,"$1")},datetime:function(e){return e.value.replace(/\D/g,"").replace(/(\d{2})(\d)/,"$1/$2").replace(/(\d{2})(\d{1,4})/,"$1/$2").replace(/(\d{4})(\d{1,2})/,"$1 $2").replace(/(\d{4}) (\d{2})(\d{1,2})/,"$1 $2:$3").replace(/(\:\d{2})\d+?$/,"$1")},year_month:function(e){return e.value.length>7?e.value.substring(0,7):e.value.replace(/\D/g,"").replace(/(\d{4})(\d)/,"$1/$2").replace(/(\/\d{2})\d+?$/,"$1")},month_year:function(e){return e.value.length>7?e.value.substring(0,7):e.value.replace(/\D/g,"").replace(/(\d{2})(\d)/,"$1/$2").replace(/\/(\d{4})\d+?$/,"$1")},time:function(e){return e.value.replace(/\D/g,"").replace(/(\d{2})(\d)/,"$1:$2").replace(/(\:\d{2})\d+?$/,"$1")},money:function(e){let a=e.dataset.culture||"en-us",t=!e.dataset.masked;e.setAttribute("maxlength",18);let r=e.value;for(;r.length>0&&("0"==r.substring(0,1)||"."==r.substring(0,1)||","==r.substring(0,1));)r=r.substring(1);switch(1==r.length?r="0.0"+r:2==r.length&&(r="0."+r),a.toLowerCase()){case"pt-br":e.setAttribute("placeholder","0,00"),r=(t?parseFloat(r).toFixed(2).toString():r.replaceAll(".","").replace(",",".")).replace(/\D/g,"").replace(/(\d{1, 2})$/,"$1").replace(/(\d+)(\d{2})/,"$1,$2").replace(/(\d+)(\d{3})/,"$1.$2").replace(/(\d+)(\d{3})/,"$1.$2").replace(/(\d+)(\d{3})/,"$1.$2").replace(/(\d+)(\d{3})/,"$1.$2");break;default:e.setAttribute("placeholder","0.00"),r=(t?parseFloat(r).toFixed(2).toString():r.replace(",",".")).replace(/\D/g,"").replace(/(\d{1, 2})$/,"$1").replace(/(\d+)(\d{2})/,"$1.$2").replace(/(\d+)(\d{3})/,"$1,$2").replace(/(\d+)(\d{3})/,"$1,$2").replace(/(\d+)(\d{3})/,"$1,$2").replace(/(\d+)(\d{3})/,"$1,$2")}return e.dataset.masked=!0,r},ccard:function(e){let a=e.value.replace(/\D/g,""),t=a.length>0?a.substring(0,1):"";if(""==t)return"";switch(t){case"4":case"5":case"6":return e.setAttribute("maxlength",19),a.replace(/(\d{4})(\d)/,"$1 $2").replace(/( \d{4})(\d)/,"$1 $2").replace(/( \d{4})(\d)/,"$1 $2").replace(/( \d{4})(\d+?$)/,"$1 $2");case"3":let r=a.length>1?a.substring(1,1):"";if(""==r)return a;switch(r){case"6":case"8":return e.setAttribute("maxlength",16),a.replace(/(\d{4})(\d)/,"$1 $2").replace(/( \d{6})(\d)/,"$1 $2").replace(/( \d{4})(\d+?$)/,"$1 $2");case"4":case"7":return e.setAttribute("maxlength",17),a.replace(/(\d{4})(\d)/,"$1 $2").replace(/( \d{6})(\d)/,"$1 $2").replace(/( \d{5})(\d+?$)/,"$1 $2");default:return a}default:return a}},number:function(e){return e.value.replace(/\D/g,"")},float:function(e){return e.value.replace(/[^\-0-9.,]/g,"")},percent:function(e){let a=e.dataset.culture||"en-us",t=parseInt(e.dataset.precision||"2"),r=!e.dataset.masked,l=parseFloat(e.dataset.max||"100.00");e.setAttribute("maxlength",4+t);let d=e.value;for(;d.length>0&&("0"==d.substring(0,1)||"."==d.substring(0,1)||","==d.substring(0,1));)d=d.substring(1);for(;d.length>0&&d.length<=t;)d="0."+d.padStart(t,"0");let c=new RegExp("(\\d{1,"+t+"})$"),n=new RegExp("(\\d{1,3})(\\d{"+t+"})");switch(a.toLowerCase()){case"pt-br":e.setAttribute("placeholder","0,"+"0".padEnd(t,"0")),d=(r?parseFloat(d).toFixed(t).toString():d.replace(",",".")).replace(/\D/g,"").replace(c,"$1").replace(n,"$1,$2");break;default:e.setAttribute("placeholder","0."+"0".padEnd(t,"0")),d=(r?parseFloat(d).toFixed(t).toString():d).replace(/\D/g,"").replace(c,"$1").replace(n,"$1.$2")}e.dataset.masked=!0;let p=parseFloat(d.replace(/\D/g,"").replace(c,"$1").replace(n,"$1.$2"));return p>l&&(d=d.substring(0,d.length-1)),d}},t=function(){document.querySelectorAll("input[data-mask]").forEach(e=>{if(!e.dataset.mask)return!1;e.value=a[e.dataset.mask]?a[e.dataset.mask](e):e.value,e.addEventListener("input",t=>{null!=t.data||""==t.target.value?t.target.value=a[e.dataset.mask](t.target):t.target.value=t.target.value.substring(0,t.target.value.length)}),e.addEventListener("blur",t=>{t.target.value=a[e.dataset.mask](t.target)}),e.addEventListener("keyup",t=>{t.target.value=a[e.dataset.mask](t.target)}),e.addEventListener("focus",a=>{e.select()})})};return{init:t}});