just-phone-mask
Version:
Simple and easy phone number input mask plugin
2 lines • 1.99 kB
JavaScript
/*! For license information please see just-phone-mask.min.js.LICENSE.txt */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("JustPhoneMask",[],e):"object"==typeof exports?exports.JustPhoneMask=e():t.JustPhoneMask=e()}(self,(()=>(()=>{"use strict";var t={d:(e,s)=>{for(var o in s)t.o(s,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:s[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>o});const s="INPUT";class o{#t="_";#e={countryCode:"+7",bodyMask:" ___ ___ __ __",setPlaceholder:!1,selectors:null};constructor(t){Object.defineProperties(this.#e,{maskPatternSymbol:{value:this.#t,writable:!1,configurable:!0},phoneMask:{get:function(){return`${this.countryCode}${this.bodyMask}`}},literalPattern:{get:function(){return new RegExp(`[\\${this.maskPatternSymbol}]`)}},digitalPattern:{value:/[0-9]/,writable:!1,configurable:!1}}),this.options=Object.assign(this.#e,t),this.options.selectors?this.maskNumbers=document.querySelectorAll(`${this.options.selectors}`):this.maskNumbers=document.querySelectorAll('[type="tel"]'),this.#s()}#s(){if(0!==this.maskNumbers.length)if(Array.from(this.maskNumbers).every((t=>t.tagName===s)))this.#o();else{let t=Array.from(this.maskNumbers).find((t=>t.tagName!==s));console.error(`Found element tagname ${t.tagName}. Element tagname must be only INPUT`)}}#o(){this.maskNumbers.forEach((e=>{e.setAttribute("data-mask",this.options.phoneMask),this.options.setPlaceholder&&e.setAttribute("placeholder",this.options.phoneMask),e.addEventListener("input",(e=>t(e)))}));const t=t=>{const e=t.target,s=e.value,o=e.dataset.mask;let n="";try{const t=o.length;let a=0,r=0;for(;r<t&&!(r>=s.length)&&(o[r]!==`${this.options.maskPatternSymbol}`||null!==s[a].match(this.options.digitalPattern));){for(;null===o[r].match(this.options.literalPattern)&&s[a]!==o[r];)n+=o[r++];n+=s[a++],r++}e.value=n}catch(t){console.error(t)}}}}return e.default})()));