UNPKG

primevue

Version:

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![npm version](https://badge.fury.io/js/primevue.svg)](https://badge.fury.io/js/primevue) [![Discord Chat](https://img.shields.io/discord/55794023

2 lines (1 loc) 8.24 kB
this.primevue=this.primevue||{},this.primevue.inputmask=function(e,t,s){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n={name:"InputMask",extends:{name:"BaseInputMask",extends:i(t).default,props:{modelValue:null,slotChar:{type:String,default:"_"},mask:{type:String,default:null},autoClear:{type:Boolean,default:!0},unmask:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1}},css:{classes:{root:function(e){return["p-inputmask p-inputtext p-component",{"p-filled":e.instance.filled}]}}}},emits:["update:modelValue","focus","blur","keydown","complete","keypress","paste"],watch:{mask:function(e,t){t!==e&&this.initMask()}},mounted:function(){this.initMask()},updated:function(){this.isValueUpdated()&&this.updateValue()},methods:{onInput:function(e){this.androidChrome?this.handleAndroidInput(e):this.handleInputChange(e),this.$emit("update:modelValue",e.target.value)},onFocus:function(e){var t,s=this;this.readonly||(this.focus=!0,clearTimeout(this.caretTimeoutId),this.focusText=this.$el.value,t=this.checkVal(),this.caretTimeoutId=setTimeout((function(){s.$el===document.activeElement&&(s.writeBuffer(),t===s.mask.replace("?","").length?s.caret(0,t):s.caret(t))}),10),this.$emit("focus",e))},onBlur:function(e){if(this.focus=!1,this.checkVal(),this.updateModel(e),this.$el.value!==this.focusText){var t=document.createEvent("HTMLEvents");t.initEvent("change",!0,!1),this.$el.dispatchEvent(t)}this.$emit("blur",e)},onKeyDown:function(t){if(!this.readonly){var s,i,n,a=t.which||t.keyCode,h=/iphone/i.test(e.DomHandler.getUserAgent());this.oldVal=this.$el.value,8===a||46===a||h&&127===a?((n=(s=this.caret()).end)-(i=s.begin)==0&&(i=46!==a?this.seekPrev(i):n=this.seekNext(i-1),n=46===a?this.seekNext(n):n),this.clearBuffer(i,n),this.shiftL(i,n-1),this.updateModel(t),t.preventDefault()):13===a?(this.$el.blur(),this.updateModel(t)):27===a&&(this.$el.value=this.focusText,this.caret(0,this.checkVal()),this.updateModel(t),t.preventDefault()),this.$emit("keydown",t)}},onKeyPress:function(t){var s=this;if(!this.readonly){var i,n,a,h,l=t.which||t.keyCode,r=this.caret();if(!(t.ctrlKey||t.altKey||t.metaKey||l<32)){if(l&&13!==l){if(r.end-r.begin!=0&&(this.clearBuffer(r.begin,r.end),this.shiftL(r.begin,r.end-1)),(i=this.seekNext(r.begin-1))<this.len&&(n=String.fromCharCode(l),this.tests[i].test(n))){if(this.shiftR(i),this.buffer[i]=n,this.writeBuffer(),a=this.seekNext(i),/android/i.test(e.DomHandler.getUserAgent())){setTimeout((function(){s.caret(a)}),0)}else this.caret(a);r.begin<=this.lastRequiredNonMaskPos&&(h=this.isCompleted())}t.preventDefault()}this.updateModel(t),h&&this.$emit("complete",t),this.$emit("keypress",t)}}},onPaste:function(e){this.handleInputChange(e),this.$emit("paste",e)},caret:function(e,t){var s,i,n;if(this.$el.offsetParent&&this.$el===document.activeElement)return"number"!=typeof e?(this.$el.setSelectionRange?(i=this.$el.selectionStart,n=this.$el.selectionEnd):document.selection&&document.selection.createRange&&(n=(i=0-(s=document.selection.createRange()).duplicate().moveStart("character",-1e5))+s.text.length),{begin:i,end:n}):(i=e,n="number"==typeof t?t:i,void(this.$el.setSelectionRange?this.$el.setSelectionRange(i,n):this.$el.createTextRange&&((s=this.$el.createTextRange()).collapse(!0),s.moveEnd("character",n),s.moveStart("character",i),s.select())))},isCompleted:function(){for(var e=this.firstNonMaskPos;e<=this.lastRequiredNonMaskPos;e++)if(this.tests[e]&&this.buffer[e]===this.getPlaceholder(e))return!1;return!0},getPlaceholder:function(e){return this.slotChar.charAt(e<this.slotChar.length?e:0)},seekNext:function(e){for(;++e<this.len&&!this.tests[e];);return e},seekPrev:function(e){for(;--e>=0&&!this.tests[e];);return e},shiftL:function(e,t){var s,i;if(!(e<0)){for(s=e,i=this.seekNext(t);s<this.len;s++)if(this.tests[s]){if(!(i<this.len&&this.tests[s].test(this.buffer[i])))break;this.buffer[s]=this.buffer[i],this.buffer[i]=this.getPlaceholder(i),i=this.seekNext(i)}this.writeBuffer(),this.caret(Math.max(this.firstNonMaskPos,e))}},shiftR:function(e){var t,s,i,n;for(t=e,s=this.getPlaceholder(e);t<this.len;t++)if(this.tests[t]){if(i=this.seekNext(t),n=this.buffer[t],this.buffer[t]=s,!(i<this.len&&this.tests[i].test(n)))break;s=n}},handleAndroidInput:function(e){var t=this.$el.value,s=this.caret();if(this.oldVal&&this.oldVal.length&&this.oldVal.length>t.length){for(this.checkVal(!0);s.begin>0&&!this.tests[s.begin-1];)s.begin--;if(0===s.begin)for(;s.begin<this.firstNonMaskPos&&!this.tests[s.begin];)s.begin++;this.caret(s.begin,s.begin)}else{for(this.checkVal(!0);s.begin<this.len&&!this.tests[s.begin];)s.begin++;this.caret(s.begin,s.begin)}this.isCompleted()&&this.$emit("complete",e)},clearBuffer:function(e,t){var s;for(s=e;s<t&&s<this.len;s++)this.tests[s]&&(this.buffer[s]=this.getPlaceholder(s))},writeBuffer:function(){this.$el.value=this.buffer.join("")},checkVal:function(e){this.isValueChecked=!0;var t,s,i,n=this.$el.value,a=-1;for(t=0,i=0;t<this.len;t++)if(this.tests[t]){for(this.buffer[t]=this.getPlaceholder(t);i++<n.length;)if(s=n.charAt(i-1),this.tests[t].test(s)){this.buffer[t]=s,a=t;break}if(i>n.length){this.clearBuffer(t+1,this.len);break}}else this.buffer[t]===n.charAt(i)&&i++,t<this.partialPosition&&(a=t);return e?this.writeBuffer():a+1<this.partialPosition?this.autoClear||this.buffer.join("")===this.defaultBuffer?(this.$el.value&&(this.$el.value=""),this.clearBuffer(0,this.len)):this.writeBuffer():(this.writeBuffer(),this.$el.value=this.$el.value.substring(0,a+1)),this.partialPosition?t:this.firstNonMaskPos},handleInputChange:function(e){if(!this.readonly){var t=this.checkVal(!0);this.caret(t),this.updateModel(e),this.isCompleted()&&this.$emit("complete",e)}},getUnmaskedValue:function(){for(var e=[],t=0;t<this.buffer.length;t++){var s=this.buffer[t];this.tests[t]&&s!==this.getPlaceholder(t)&&e.push(s)}return e.join("")},updateModel:function(e){var t=this.unmask?this.getUnmaskedValue():e.target.value;this.$emit("update:modelValue",this.defaultBuffer!==t?t:"")},updateValue:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.$el&&(null==this.modelValue?(this.$el.value="",t&&this.$emit("update:modelValue","")):(this.$el.value=this.modelValue,this.checkVal(),setTimeout((function(){if(e.$el&&(e.writeBuffer(),e.checkVal(),t)){var s=e.unmask?e.getUnmaskedValue():e.$el.value;e.$emit("update:modelValue",e.defaultBuffer!==s?s:"")}}),10)),this.focusText=this.$el.value)},initMask:function(){this.tests=[],this.partialPosition=this.mask.length,this.len=this.mask.length,this.firstNonMaskPos=null,this.defs={9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"};var t=e.DomHandler.getUserAgent();this.androidChrome=/chrome/i.test(t)&&/android/i.test(t);for(var s=this.mask.split(""),i=0;i<s.length;i++){var n=s[i];"?"===n?(this.len--,this.partialPosition=i):this.defs[n]?(this.tests.push(new RegExp(this.defs[n])),null===this.firstNonMaskPos&&(this.firstNonMaskPos=this.tests.length-1),i<this.partialPosition&&(this.lastRequiredNonMaskPos=this.tests.length-1)):this.tests.push(null)}this.buffer=[];for(var a=0;a<s.length;a++){var h=s[a];"?"!==h&&this.buffer.push(this.defs[h]?this.getPlaceholder(a):h)}this.defaultBuffer=this.buffer.join(""),this.updateValue(!1)},isValueUpdated:function(){return this.unmask?this.modelValue!=this.getUnmaskedValue():this.defaultBuffer!==this.$el.value&&this.$el.value!==this.modelValue}},computed:{filled:function(){return null!=this.modelValue&&this.modelValue.toString().length>0}}},a=["readonly"];return n.render=function(e,t,i,n,h,l){return s.openBlock(),s.createElementBlock("input",s.mergeProps({class:e.cx("root"),readonly:e.readonly,onInput:t[0]||(t[0]=function(){return l.onInput&&l.onInput.apply(l,arguments)}),onFocus:t[1]||(t[1]=function(){return l.onFocus&&l.onFocus.apply(l,arguments)}),onBlur:t[2]||(t[2]=function(){return l.onBlur&&l.onBlur.apply(l,arguments)}),onKeydown:t[3]||(t[3]=function(){return l.onKeyDown&&l.onKeyDown.apply(l,arguments)}),onKeypress:t[4]||(t[4]=function(){return l.onKeyPress&&l.onKeyPress.apply(l,arguments)}),onPaste:t[5]||(t[5]=function(){return l.onPaste&&l.onPaste.apply(l,arguments)})},e.ptm("root"),{"data-pc-name":"inputmask"}),null,16,a)},n}(primevue.utils,primevue.basecomponent,Vue);