hurbis-ui-mascara-v1
Version:
Biblioteca contendo componentes visuais de máscaras, validadores e formatadores para AngularJS em TypeScript.
6 lines • 15.8 kB
JavaScript
/**
* @license hurbis-mascara-v1 v1.2.1
* (c) 2018 Hurbis Tecnologia da Informação Ltda. https://www.hurbis.com.br
* License: MIT
*/
var hurbis;(function(n){var t;(function(t){var i;(function(t){"use strict";var i=function(){function t(){}return t.inicializar=function(){n.comum.GestorModulo.registrarModulo(t.DEFINICAO)},t.DEFINICAO={nome:"hurbis.ui.mascara",requisitos:["hurbis.comum"]},t}();t.Modulo=i;i.inicializar()})(i=t.mascara||(t.mascara={}))})(t=n.ui||(n.ui={}))})(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function n(n,t){t===void 0&&(t={});this.mascara=n;this.opcoes=t;this.tokens={d:{pattern:/\d/,_default:"0"},o:{pattern:/\d/,opcional:!0},"#":{pattern:/\d/,opcional:!0,recursivo:!0},A:{pattern:/[a-zA-Z0-9]/},S:{pattern:/[a-zA-Z]/},U:{pattern:/[a-zA-Z]/,transformar:function(n){return n.toLocaleUpperCase()}},L:{pattern:/[a-zA-Z]/,transformar:function(n){return n.toLocaleLowerCase()}},$:{escape:!0},"0":{pattern:/[0]/},"1":{pattern:/[0-1]/},"2":{pattern:/[0-2]/},"3":{pattern:/[0-3]/},"4":{pattern:/[0-4]/},"5":{pattern:/[0-5]/},"6":{pattern:/[0-6]/},"7":{pattern:/[0-7]/},"8":{pattern:/[0-8]/},"9":{pattern:/[0-9]/}};this.opcoes={reverso:this.opcoes.reverso||!1,utilizarPadrao:this.opcoes.utilizarPadrao||this.opcoes.reverso}}return n.prototype.escape=function(n,t){for(var r=0,u=t-1,i={escape:!0};u>=0&&i&&i.escape;)i=this.tokens[n.charAt(u)],r+=i&&i.escape?1:0,u--;return r>0&&r%2==1},n.prototype.calcularQuantidadeNumeroOpcional=function(n,t){var i=n.replace(/[^o]/g,"").length,r=t.replace(/[^\d]/g,"").length;return r-i},n.prototype.concatenarCaracter=function(n,t,i,r){return(r&&typeof r.transformar=="function"&&(t=r.transformar(t)),i.reverso)?t+n:n+t},n.prototype.existeTokenDefinido=function(n){return this.tokens[n]!=null},n.prototype.existeToken=function(n,t,i){var r=n.charAt(t),u=this.tokens[r];return r===""?!1:u&&!u.escape?!0:this.existeToken(n,t+i,i)},n.prototype.existeTokenRecursivo=function(n,t,i){var r=n.charAt(t),u=this.tokens[r];return r===""?!1:u&&u.recursivo?!0:this.existeTokenRecursivo(n,t+i,i)},n.prototype.inserirCaracter=function(n,t,i){var r=n.split("");return r.splice(i,0,t),r.join("")},n.prototype.processar=function(n){var l=this;if(!n)return{resultado:"",valido:!1};n=n+"";for(var u=this.mascara,a=!0,i="",s=this.opcoes.reverso?n.length-1:0,r=0,y=this.calcularQuantidadeNumeroOpcional(u,n),v=!1,f=[],e=!1,h={inicio:this.opcoes.reverso?u.length-1:0,fim:this.opcoes.reverso?-1:u.length,incremento:this.opcoes.reverso?-1:1},p=function(t){if(e||f.length||!l.existeToken(u,r,h.incremento)){if(!e&&f.length&&l.existeTokenRecursivo(u,r,h.incremento))return!0;e||(e=f.length>0)}else return!0;if(e){var i=f.shift();if(f.push(i),t.reverso&&s>=0)return r++,u=l.inserirCaracter(u,i,r),!0;if(!t.reverso&&s<n.length)return u=l.inserirCaracter(u,i,r),!0}return r<u.length&&r>=0},r=h.inicio;p(this.opcoes);r=r+h.incremento){var o=n.charAt(s),c=u.charAt(r),t=this.tokens[c];if(f.length&&t&&!t.recursivo&&(t=null),!e||o)if(this.opcoes.reverso&&this.escape(u,r)){i=this.concatenarCaracter(i,c,this.opcoes,t);r=r+h.incremento;continue}else if(!this.opcoes.reverso&&v){i=this.concatenarCaracter(i,c,this.opcoes,t);v=!1;continue}else if(!this.opcoes.reverso&&t&&t.escape){v=!0;continue}if(!e&&t&&t.recursivo)f.push(c);else if(e&&!o){i=this.concatenarCaracter(i,c,this.opcoes,t);continue}else if(!e&&f.length>0&&!o)continue;if(t)if(t.opcional){if(t.pattern.test(o)&&y)i=this.concatenarCaracter(i,o,this.opcoes,t),s=s+h.incremento,y--;else if(f.length>0&&o){a=!1;break}}else if(t.pattern.test(o))i=this.concatenarCaracter(i,o,this.opcoes,t),s=s+h.incremento;else if(!o&&t._default&&this.opcoes.utilizarPadrao)i=this.concatenarCaracter(i,t._default,this.opcoes,t);else{a=!1;break}else i=this.concatenarCaracter(i,c,this.opcoes,t),!e&&f.length&&f.push(c)}return{resultado:i,valido:a}},n.prototype.aplicar=function(n){return this.processar(n).resultado},n.prototype.validar=function(n){return this.processar(n).valido},n.processar=function(t,i,r){return new n(i,r).processar(t)},n.aplicar=function(t,i,r){return new n(i,r).aplicar(t)},n.validar=function(t,i,r){return new n(i,r).validar(t)},n}();n.Formatador=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(t){this.mascara=t;this.formatadorMascara=new n.Formatador(this.mascara)}return t.prototype.converterParaModel=function(n,t){return(t===void 0&&(t=!1),t)?n:this.limparTexto(n)},t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"")},t.prototype.formatar=function(n){var r=this.limparTexto(n),t=this.formatadorMascara.aplicar(r),i=t.length;return i>0&&!this.formatadorMascara.existeTokenDefinido(t[i-1])&&t[i-1]==this.mascara[i-1]&&(t=t.slice(0,i-1)),t},t.prototype.configurarValidador=function(){},t}();n.Generica=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(t){t===void 0&&(t={});this.mascara="DD/MM/YYYY";t&&t.formato&&(this.mascara=t.formato.toLocaleUpperCase());var i=this.mascara.replace(/DD/g,"39").replace(/MM/g,"19").replace(/YYYY/g,"9999").replace(/YY/g,"99");this.formatadorMascara=new n.Formatador(i)}return t.prototype.converterParaModel=function(n,t){t===void 0&&(t=!1);var i=moment(n,this.mascara,!0);return i.isValid()?i.toDate():new Date(NaN)},t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").slice(0,this.mascara.length)||""},t.prototype.formatar=function(n){var t=this.limparTexto(n.toString());return(this.formatadorMascara.aplicar(t)||"").replace(/[^0-9]$/,"")},t.prototype.configurarValidador=function(n,t,i){var r=this;i.$validators.data=function(n){if(i.$isEmpty(n))return!0;var t=moment(n,r.mascara,!0);return t.isValid()}},t}();n.Data=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(t){t===void 0&&(t=!0);this.mascara="29:59";t||(this.mascara="29:59:59");this.formatadorMascara=new n.Formatador(this.mascara)}return t.prototype.converterParaModel=function(n,t){return t===void 0&&(t=!1),n},t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").slice(0,this.mascara.replace(/:/g,"").length)||""},t.prototype.formatar=function(n){var t=this.limparTexto(n);return(this.formatadorMascara.aplicar(t)||"").replace(/[^0-9]$/,"")},t.prototype.configurarValidador=function(n,t,i){i.$validators.hora=function(n){if(i.$isEmpty(n))return!0;var t=new RegExp(/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$/);return t.test(n)}},t}();n.Hora=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(n,t){t===void 0&&(t={});this.configuracao=t;this.separadorSimbolo=" ";this.backspacePressed=!1;t.separadorDecimal==null&&(t.separadorDecimal=n.NUMBER_FORMATS.DECIMAL_SEP);t.separadorMilhar==null&&(t.separadorMilhar=n.NUMBER_FORMATS.GROUP_SEP);t.simbolo==null&&(t.simbolo=n.NUMBER_FORMATS.CURRENCY_SYM);t.quantidadeCasaDecimal==null&&(t.quantidadeCasaDecimal=0);t.exibeSimbolo||(t.simbolo="");t.exibeSeparadorMilhar||(t.separadorMilhar="");this.formatadorMascara=this.configurarMascara();this.formatadorModel=this.configurarMascara(!0)}return t.prototype.configurarMascara=function(t){var u,r,i;return(t===void 0&&(t=!1),u=t?".":this.configuracao.separadorDecimal,r=this.configuracao.quantidadeCasaDecimal>0?u+new Array(this.configuracao.quantidadeCasaDecimal+1).join("d"):"",t)?new n.Formatador("#d"+r,{reverso:!0}):(i="#"+this.configuracao.separadorMilhar+"##d"+r,angular.isDefined(this.configuracao.exibeSimboloAposNumero)?i+=this.configuracao.simbolo?this.separadorSimbolo+this.configuracao.simbolo:"":i=(this.configuracao.simbolo?this.configuracao.simbolo+this.separadorSimbolo:"")+i,new n.Formatador(i,{reverso:!0}))},t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").replace(/^0*/,"")},t.prototype.formatarValorNegativo=function(n,t){var i=this,f=this.limparTexto(n),e=function(){return i.formatadorMascara.aplicar(f)},o=function(){var n=i.formatadorModel.aplicar(f);return i.configuracao.quantidadeCasaDecimal==0?parseInt(n):parseFloat(n)};if(!this.configuracao.permiteNegativo)return t?o():e();var r=e(),u=o(),s=n[0]==="-",h=n.slice(-1)==="-";return(!h&&s||h&&!s)&&(u*=-1,r="-"+(u!==0?r:"")),t?u:r},t.prototype.converterParaModel=function(n,t){return t===void 0&&(t=!1),this.formatarValorNegativo(n,!0)},t.prototype.formatar=function(n){var t;return t=typeof n=="number"?n.toFixed(this.configuracao.quantidadeCasaDecimal):n.toString(),this.formatarValorNegativo(t,!1)},t.prototype.configurarValidador=function(n,t,i){var r,u;t.min&&(r=parseFloat(t.min),i.$validators.min=function(n){return i.$isEmpty(n)||isNaN(r)||n>=r},n.$watch(t.min,function(n){r=parseFloat(n);i.$validate()}));t.max&&(u=parseFloat(t.max),i.$validators.max=function(n){return i.$isEmpty(n)||isNaN(u)||n<=u},n.$watch(t.max,function(n){u=parseFloat(n);i.$validate()}))},t}();n.Numero=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(t){var i;(function(t){"use strict";var i=function(){function i(n){n===void 0&&(n="cpfcnpj");this.tipo=n;this.mascaraCPF="999.999.999-99";this.mascaraCNPJ="99.999.999/9999-99";switch(n){case"cpf":this.formatadorMascaraCPF=new t.Formatador(this.mascaraCPF);break;case"cnpj":this.formatadorMascaraCNPJ=new t.Formatador(this.mascaraCNPJ);break;default:this.formatadorMascaraCPF=new t.Formatador(this.mascaraCPF);this.formatadorMascaraCNPJ=new t.Formatador(this.mascaraCNPJ)}}return i.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").slice(0,14)},i.prototype.formatar=function(n){var t=this.limparTexto(n),i;return i=this.formatadorMascaraCNPJ&&t.length>11?this.formatadorMascaraCNPJ.aplicar(t):this.formatadorMascaraCPF.aplicar(t)||"",i.trim().replace(/[^0-9]$/,"")},i.prototype.converterParaModel=function(n,t){return(t===void 0&&(t=!1),t)?n:this.limparTexto(n)},i.prototype.configurarValidador=function(t,i,r){var u=this;switch(this.tipo){case"cpf":r.$validators.cpf=function(t){if(r.$isEmpty(t))return!0;var i=u.limparTexto(t);return n.comum.util.validador.CPF.validar(i)};break;case"cnpj":r.$validators.cnpj=function(t){if(r.$isEmpty(t))return!0;var i=u.limparTexto(t);return n.comum.util.validador.CNPJ.validar(i)};break;default:r.$validators.cpfcnpj=function(t){if(r.$isEmpty(t))return!0;var i=u.limparTexto(t);return i.length>11?n.comum.util.validador.CNPJ.validar(i):n.comum.util.validador.CPF.validar(i)}}},i}();t.CPFCNPJ=i})(i=t.mascara||(t.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(){this.mascara="9999 9999 9999 9999";this.mascaraAmex="9999 999999 99999";this.formatadorMascara=new n.Formatador(this.mascara);this.formatadorMascaraAmex=new n.Formatador(this.mascaraAmex)}return t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").slice(0,16)},t.prototype.formatar=function(n){var t=this.limparTexto(n),i;return i=t.length>15?this.formatadorMascara.aplicar(t):this.formatadorMascaraAmex.aplicar(t),i.trim()},t.prototype.converterParaModel=function(n,t){return(t===void 0&&(t=!1),t)?n:this.limparTexto(n)},t.prototype.configurarValidador=function(n,t,i){var r=this;i.$validators.cartaoCredito=function(n){return i.$isEmpty(n)?!0:r.limparTexto(n).length>14}},t}();n.CartaoCredito=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(){this.mascara="99999-999";this.formatadorMascara=new n.Formatador(this.mascara)}return t.prototype.converterParaModel=function(n,t){return(t===void 0&&(t=!1),t)?n:this.limparTexto(n)},t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").slice(0,8)},t.prototype.formatar=function(n){var t=this.limparTexto(n);return this.formatadorMascara.aplicar(t).trim().replace(/[^0-9]$/,"")},t.prototype.configurarValidador=function(n,t,i){var r=this;i.$validators.cep=function(n){if(i.$isEmpty(n))return!0;var t=r.limparTexto(n);return t.length==8}},t}();n.CEP=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(n){var t;(function(n){"use strict";var t=function(){function t(){this.mascara8Digitos={codigoPais:new n.Formatador("+dd (dd) dddd-dddd"),codigoArea:new n.Formatador("(dd) dddd-dddd"),simples:new n.Formatador("dddd-dddd")};this.mascara9Digitos={codigoPais:new n.Formatador("+dd (dd) ddddd-dddd"),codigoArea:new n.Formatador("(dd) ddddd-dddd"),simples:new n.Formatador("ddddd-dddd")};this.mascara0800={simples:new n.Formatador("dddd-ddd-dddd")}}return t.prototype.limparTexto=function(n){return n.replace(/[^0-9]/g,"").slice(0,13)},t.prototype.formatar=function(n){var t=this.limparTexto(n),i;return i=t.indexOf("0800")===0?this.mascara0800.simples.aplicar(t):t.length<9?this.mascara8Digitos.simples.aplicar(t)||"":t.length<10?this.mascara9Digitos.simples.aplicar(t):t.length<11?this.mascara8Digitos.codigoArea.aplicar(t):t.length<12?this.mascara9Digitos.codigoArea.aplicar(t):t.length<13?this.mascara8Digitos.codigoPais.aplicar(t):this.mascara9Digitos.codigoPais.aplicar(t),i.trim().replace(/[^0-9]$/,"")},t.prototype.converterParaModel=function(n,t){return(t===void 0&&(t=!1),t)?n:this.limparTexto(n)},t.prototype.configurarValidador=function(n,t,i){var r=this;i.$validators.telefone=function(n){if(i.$isEmpty(n))return!0;var t=r.limparTexto(n).length;return t>=8&&t<=13}},t}();n.Telefone=t})(t=n.mascara||(n.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={})),function(n){var t;(function(t){var i;(function(i){"use strict";var r=function(){function r(n){var t=this;this.$locale=n;this.restrict="A";this.require="ngModel";this.priority=100;this.link=function(n,i,r,u){var o,s=r.hbsMascara,f=i[0],h;f.autocomplete="off";o=s.search(/^\{.*\}$/g)>=0?n.$eval(s):{tipo:s};var e=t.instanciarMascara(o),c=function(n){n.which===32&&n.preventDefault()},l=function(n){var t=n.originalEvent,i=t.clipboardData.getData("text/plain").trim();i.length==0&&n.preventDefault()};i.bind("keydown",c);i.bind("paste",l);h=function(n){return u.$isEmpty(n)?n:e.formatar(n)};u.$formatters.push(h);u.$parsers.push(function(n){var t,i;return u.$isEmpty(n)?(f.value="",n):(t=e.formatar(n),(u.$viewValue!==t||u.$viewValue!==f.value)&&(i=u.$viewValue,u.$setViewValue(t),i.length-f.value.length!=0&&e.limparTexto(f.value).length-e.limparTexto(i).length==0&&setTimeout(function(){f.setSelectionRange(t.length,t.length)},0),u.$render()),e.converterParaModel(t,o.manterMascara))});e.configurarValidador(n,r,u)}}return r.prototype.instanciarMascara=function(n){var t=n.tipo.toLocaleLowerCase();switch(t){case"hora":case"horareduzida":return new i.Hora(t=="horareduzida");case"data":return new i.Data(n.data);case"cpf":case"cnpj":case"cpfcnpj":return new i.CPFCNPJ(t);case"cartaocredito":return new i.CartaoCredito;case"valor":case"inteiro":return t=="valor"&&(n.numero==null&&(n.numero={}),n.numero.exibeSimbolo==null&&(n.numero.exibeSimbolo=!1),n.numero.exibeSeparadorMilhar==null&&(n.numero.exibeSeparadorMilhar=!0),n.numero.quantidadeCasaDecimal==null&&(n.numero.quantidadeCasaDecimal=2)),new i.Numero(this.$locale,n.numero);case"cep":return new i.CEP;case"telefone":return new i.Telefone;default:return new i.Generica(n.tipo)}},r.inicializar=function(){n.comum.GestorModulo.registrarFuncionalidade({moduloDefinicao:t.mascara.Modulo.DEFINICAO,nome:"hbsMascara",tipo:n.comum.FuncionalidadeTipo.Diretiva,objeto:["$locale",function(n){return new r(n)}]})},r}();i.Mascara=r;r.inicializar()})(i=t.mascara||(t.mascara={}))})(t=n.ui||(n.ui={}))}(hurbis||(hurbis={}));