UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

2 lines (1 loc) 8.21 kB
import{DomHandler as t}from"primevue/utils";import e from"primevue/basecomponent";import s from"primevue/inputmask/style";import{openBlock as i,createElementBlock as n,mergeProps as a}from"vue";var h={name:"InputMask",extends:{name:"BaseInputMask",extends:e,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}},style:s},emits:["update:modelValue","focus","blur","keydown","complete","keypress","paste"],watch:{mask:function(t,e){e!==t&&this.initMask()}},mounted:function(){this.initMask()},updated:function(){this.isValueUpdated()&&this.updateValue()},methods:{onInput:function(t){this.androidChrome?this.handleAndroidInput(t):this.handleInputChange(t),this.$emit("update:modelValue",t.target.value)},onFocus:function(t){var e,s=this;this.readonly||(this.focus=!0,clearTimeout(this.caretTimeoutId),this.focusText=this.$el.value,e=this.checkVal(),this.caretTimeoutId=setTimeout((function(){s.$el===document.activeElement&&(s.writeBuffer(),e===s.mask.replace("?","").length?s.caret(0,e):s.caret(e))}),10),this.$emit("focus",t))},onBlur:function(t){if(this.focus=!1,this.checkVal(),this.updateModel(t),this.$el.value!==this.focusText){var e=document.createEvent("HTMLEvents");e.initEvent("change",!0,!1),this.$el.dispatchEvent(e)}this.$emit("blur",t)},onKeyDown:function(e){if(!this.readonly){var s,i,n,a=e.which||e.keyCode,h=/iphone/i.test(t.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(e),e.preventDefault()):13===a?(this.$el.blur(),this.updateModel(e)):27===a&&(this.$el.value=this.focusText,this.caret(0,this.checkVal()),this.updateModel(e),e.preventDefault()),this.$emit("keydown",e)}},onKeyPress:function(e){var s=this;if(!this.readonly){var i,n,a,h,l=e.which||e.keyCode,r=this.caret();if(!(e.ctrlKey||e.altKey||e.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(t.getUserAgent())){setTimeout((function(){s.caret(a)}),0)}else this.caret(a);r.begin<=this.lastRequiredNonMaskPos&&(h=this.isCompleted())}e.preventDefault()}this.updateModel(e),h&&this.$emit("complete",e),this.$emit("keypress",e)}}},onPaste:function(t){this.handleInputChange(t),this.$emit("paste",t)},caret:function(t,e){var s,i,n;if(this.$el.offsetParent&&this.$el===document.activeElement)return"number"!=typeof t?(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=t,n="number"==typeof e?e: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 t=this.firstNonMaskPos;t<=this.lastRequiredNonMaskPos;t++)if(this.tests[t]&&this.buffer[t]===this.getPlaceholder(t))return!1;return!0},getPlaceholder:function(t){return this.slotChar.charAt(t<this.slotChar.length?t:0)},seekNext:function(t){for(;++t<this.len&&!this.tests[t];);return t},seekPrev:function(t){for(;--t>=0&&!this.tests[t];);return t},shiftL:function(t,e){var s,i;if(!(t<0)){for(s=t,i=this.seekNext(e);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,t))}},shiftR:function(t){var e,s,i,n;for(e=t,s=this.getPlaceholder(t);e<this.len;e++)if(this.tests[e]){if(i=this.seekNext(e),n=this.buffer[e],this.buffer[e]=s,!(i<this.len&&this.tests[i].test(n)))break;s=n}},handleAndroidInput:function(t){var e=this.$el.value,s=this.caret();if(this.oldVal&&this.oldVal.length&&this.oldVal.length>e.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",t)},clearBuffer:function(t,e){var s;for(s=t;s<e&&s<this.len;s++)this.tests[s]&&(this.buffer[s]=this.getPlaceholder(s))},writeBuffer:function(){this.$el.value=this.buffer.join("")},checkVal:function(t){this.isValueChecked=!0;var e,s,i,n=this.$el.value,a=-1;for(e=0,i=0;e<this.len;e++)if(this.tests[e]){for(this.buffer[e]=this.getPlaceholder(e);i++<n.length;)if(s=n.charAt(i-1),this.tests[e].test(s)){this.buffer[e]=s,a=e;break}if(i>n.length){this.clearBuffer(e+1,this.len);break}}else this.buffer[e]===n.charAt(i)&&i++,e<this.partialPosition&&(a=e);return t?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?e:this.firstNonMaskPos},handleInputChange:function(t){if(!this.readonly&&!("paste"===t.type)){var e=this.checkVal(!0);this.caret(e),this.updateModel(t),this.isCompleted()&&this.$emit("complete",t)}},getUnmaskedValue:function(){for(var t=[],e=0;e<this.buffer.length;e++){var s=this.buffer[e];this.tests[e]&&s!==this.getPlaceholder(e)&&t.push(s)}return t.join("")},updateModel:function(t){var e=this.unmask?this.getUnmaskedValue():t.target.value;this.$emit("update:modelValue",this.defaultBuffer!==e?e:"")},updateValue:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.$el&&(null==this.modelValue?(this.$el.value="",e&&this.$emit("update:modelValue","")):(this.$el.value=this.modelValue,this.checkVal(),setTimeout((function(){if(t.$el&&(t.writeBuffer(),t.checkVal(),e)){var s=t.unmask?t.getUnmaskedValue():t.$el.value;t.$emit("update:modelValue",t.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 e=t.getUserAgent();this.androidChrome=/chrome/i.test(e)&&/android/i.test(e);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},ptmParams:function(){return{context:{filled:this.filled,disabled:this.$attrs.disabled||""===this.$attrs.disabled}}}}},l=["readonly"];h.render=function(t,e,s,h,r,o){return i(),n("input",a({class:t.cx("root"),readonly:t.readonly,onInput:e[0]||(e[0]=function(){return o.onInput&&o.onInput.apply(o,arguments)}),onFocus:e[1]||(e[1]=function(){return o.onFocus&&o.onFocus.apply(o,arguments)}),onBlur:e[2]||(e[2]=function(){return o.onBlur&&o.onBlur.apply(o,arguments)}),onKeydown:e[3]||(e[3]=function(){return o.onKeyDown&&o.onKeyDown.apply(o,arguments)}),onKeypress:e[4]||(e[4]=function(){return o.onKeyPress&&o.onKeyPress.apply(o,arguments)}),onPaste:e[5]||(e[5]=function(){return o.onPaste&&o.onPaste.apply(o,arguments)})},t.ptm("root",o.ptmParams),{"data-pc-name":"inputmask"}),null,16,l)};export{h as default};