@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 9.69 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.core.js"),require("kendo.floatinglabel.js"),require("kendo.icons.js"),require("kendo.prefix-suffix-containers.chunk.js")):"function"==typeof define&&define.amd?define(["exports","kendo.core.min","kendo.floatinglabel.min","kendo.icons.min","kendo.prefix-suffix-containers.chunk.min"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Maskedtextbox={}),e.kendo._globals.Core,e.kendo._globals.Floatinglabel,e.kendo._globals.Icons,e.kendo._globals.PrefixSuffixContainersChunk)}(this,(function(e,t,n,a,i){!function(e,t){var n=window,a=n.Math.min,o=n.kendo,s=o.caret,l=o.keys,r=o.ui,u=r.Widget,d=".kendoMaskedTextBox",p=e.isPlainObject,_=window.setTimeout,f="k-disabled",h="k-invalid",m="k-focus",c="disabled",g="readonly",k="change",v="mouseup",b="drop",y="keydown",x="paste";function w(e){return e+d}var C=w(o.support.propertyChangeEvent?"propertychange":"input");var I=u.extend({init:function(t,n){var a,l=this;u.fn.init.call(l,t,n),l._rules=e.extend({},l.rules,l.options.rules),t=l.element,a=t[0],l._wrapper(),l._tokenize(),l._form(),l.options.inputMode=l.options.inputMode||t.attr("inputmode")||"text",l.element.addClass("k-input-inner").attr("autocomplete","off").attr("inputmode",l.options.inputMode).on("focus"+d,(function(){var e=a.value;e?l._togglePrompt(!0):a.value=l._old=l._emptyMask,l._oldValue=e,l.wrapper.addClass(m),l._timeoutId=_((function(){s(t,0,e?l._maskLength:0)}))})).on("focusout"+d,(function(){var e=t.val();clearTimeout(l._timeoutId),a.value=l._old="",e!==l._emptyMask&&(a.value=l._old=e),l.wrapper.removeClass(m),l._change(),l._togglePrompt()})),l.options.mask&&l.options.mask.length>0&&l.element.attr("aria-placeholder",l.options.mask),t.is("[disabled]")||e(l.element).parents("fieldset").is(":disabled")?l.enable(!1):l.readonly(t.is("[readonly]")),l._validationIcon=e(o.ui.icon({icon:"exclamation-circle",iconClass:"k-input-validation-icon k-hidden"})).insertAfter(t),l.value(l.options.value||t.val()),l._label(),l._applyCssClasses(),i.a({widget:l,wrapper:l.wrapper,options:l.options,suffixInsertAfter:l._validationIcon}),l.floatingLabel&&l.floatingLabel.refresh(),o.notify(l)},options:{name:"MaskedTextBox",clearPromptChar:!1,unmaskOnPost:!1,promptChar:"_",culture:"",rules:{},value:"",mask:"",label:null,size:"medium",fillMode:"solid",rounded:"medium",prefixOptions:{separator:!0},suffixOptions:{separator:!0}},events:[k],rules:{0:/\d/,9:/\d|\s/,"#":/\d|\s|\+|\-/,L:/[a-zA-Z]/,"?":/[a-zA-Z]|\s/,"&":/\S/,C:/./,A:/[a-zA-Z0-9]/,a:/[a-zA-Z0-9]|\s/},setOptions:function(t){var n=this;u.fn.setOptions.call(n,t),n._rules=e.extend({},n.rules,n.options.rules),n._tokenize(),this._unbindInput(),this._bindInput(),n.value(n.element.val())},destroy:function(){var e=this;e.floatingLabel&&e.floatingLabel.destroy(),e.element.off(d),e._formElement&&(e._formElement.off("reset",e._resetHandler),e._formElement.off("submit",e._submitHandler)),u.fn.destroy.call(e)},raw:function(){return this._unmask(this.element.val(),0).replace(new RegExp(L(this.options.promptChar),"g"),"")},value:function(e){var n=this.element,a=this._emptyMask;return e===t?this.element.val():(null===e&&(e=""),a?(e=this._unmask(e+""),n.val(e?a:""),this._mask(0,this._maskLength,e),this._unmaskedValue=null,e=n.val(),this._oldValue=e,o._activeElement()!==n&&(e===a?n.val(""):this._togglePrompt()),void(this.floatingLabel&&this.floatingLabel.refresh())):(this._oldValue=e,void n.val(e)))},_togglePrompt:function(e){var t=this.element[0],n=t.value;this.options.clearPromptChar&&(n=e?this._oldValue:n.replace(new RegExp(L(this.options.promptChar),"g")," "),t.value=this._old=n)},readonly:function(e){this._editable({readonly:e===t||e,disable:!1}),this.floatingLabel&&this.floatingLabel.readonly(e===t||e)},enable:function(e){this._editable({readonly:!1,disable:!(e=e===t||e)}),this.floatingLabel&&this.floatingLabel.enable(e=e===t||e)},_bindInput:function(){var e=this;if(e._maskLength&&(e.element.on(w(y),e._keydown.bind(e)).on(w(b),e._drop.bind(e)).on(w(k),e._trackChange.bind(e)).on(C,e._inputHandler.bind(e)),o.support.browser.msie)){var t=o.support.browser.version;if(t>8&&t<11){var n=[w(v),w(b),w(y),w(x)].join(" ");e.element.on(n,e._legacyIEInputHandler.bind(e))}}},_unbindInput:function(){var e=[C,w(y),w(v),w(b),w(x)].join(" ");this.element.off(e)},_editable:function(e){var t=this,n=t.element,a=t.wrapper,i=e.disable,o=e.readonly;t._unbindInput(),o||i?(n.attr(c,i).attr(g,o),a.toggleClass(f,i)):(n.prop(c,!1).prop(g,!1),a.removeClass(f),t._bindInput())},_change:function(){var e=this,t=e.value();t!==e._oldValue?(e._oldValue=t,e.trigger(k),e.element.trigger(k)):""===t&&e.__changing&&e.element.trigger(k)},inputChange:function(e){var t=this,n=t._old,i=t.element[0],l=i.value,r=s(i)[1],u=l.length-n.length,d=o.support.mobileOS;if(!(t.__dropping&&u<0)){-1===u&&d.android&&"chrome"===d.browser&&(e=!0);var p=a(r,function(e,t){for(var n=0;n<t.length&&e[n]===t[n];)n++;return n}(l,n)),_=l.substring(p,r);i.value=l.substring(0,p)+t._emptyMask.substring(p);var f=t._mask(p,r,_),h=t._trimStartPromptChars(l.substring(r),a(u,f-p)),m=t._unmask(h,n.length-h.length);t._mask(f,f,m),e&&(f=t._findCaretPosBackwards(p)),s(i,f),t.__dropping=!1}},_trimStartPromptChars:function(e,t){for(var n=this.options.promptChar;t-- >0&&0===e.indexOf(n);)e=e.substring(1);return e},_findCaretPosBackwards:function(e){var t=this._find(e,!0);return t<e&&(t+=1),t},_inputHandler:function(){o._activeElement()===this.element[0]&&this.inputChange(this.__backward)},_legacyIEInputHandler:function(e){var t=this,n=t.element[0],a=n.value,i=e.type;t.__pasting="paste"===i,_((function(){"mouseup"===i&&t.__pasting||n.value&&n.value!==a&&t.inputChange(t.__backward)}))},_trackChange:function(){var e=this;e.__changing=!0,_((function(){e.__changing=!1}))},_form:function(){var t=this,n=t.element,a=n.attr("form"),i=a?e("#"+a):n.closest("form");i[0]&&(t._resetHandler=function(){_((function(){t.value(n[0].value)}))},t._submitHandler=function(){t.element[0].value=t._old=t.raw()},t.options.unmaskOnPost&&i.on("submit",t._submitHandler),t._formElement=i.on("reset",t._resetHandler))},_keydown:function(e){var t=e.keyCode;this.__backward=t===l.BACKSPACE,t===l.ENTER&&this._change()},_drop:function(){this.__dropping=!0},_find:function(e,t){var n=this.element.val()||this._emptyMask,a=1;for(!0===t&&(a=-1);e>-1||e<=this._maskLength;){if(n.charAt(e)!==this.tokens[e])return e;e+=a}return-1},_mask:function(e,n,a,i){var l,r,u,d,p=this.element[0],_=p.value||this._emptyMask,f=this.options.promptChar,h=0;for((e=this._find(e,i))>n&&(n=e),r=this._unmask(_.substring(n),n),l=(a=this._unmask(a,e)).length,a&&(r=r.replace(new RegExp("^_{0,"+l+"}"),"")),a+=r,_=_.split(""),u=a.charAt(h);e<this._maskLength;)_[e]=u||f,u=a.charAt(++h),d===t&&h>l&&(d=e),e=this._find(e+1);return p.value=this._old=_.join(""),o._activeElement()===p&&(d===t&&(d=this._maskLength),s(p,d)),d},_unmask:function(e,t){if(!e)return"";if(this._unmaskedValue===e)return this._unmaskedValue;var n,a;e=(e+"").split("");for(var i=0,s=t||0,l=this.options.promptChar,r=e.length,u=this.tokens.length,d="";s<u&&((n=e[i])===(a=this.tokens[s])||n===l?(d+=n===l?l:"",i+=1,s+=1):"string"!=typeof a?(a&&a.test&&a.test(n)||o.isFunction(a)&&a(n)?(d+=n,s+=1):1===r&&this._blinkInvalidState(),i+=1):s+=1,!(i>=r)););return this._unmaskedValue=d,d},_label:function(){var t,n,a=this,i=a.element,s=a.options,l=i.attr("id");null!==s.label&&(t=!!p(s.label)&&s.label.floating,n=p(s.label)?s.label.content:s.label,t&&(a._floatingLabelContainer=a.wrapper.wrap("<span></span>").parent(),a.floatingLabel=new o.ui.FloatingLabel(a._floatingLabelContainer,{widget:a})),o.isFunction(n)&&(n=n.call(a)),n||(n=""),l||(l=s.name+"_"+o.guid(),i.attr("id",l)),a._inputLabel=e("<label class='"+(t?"k-floating-label":"k-label k-input-label")+"' for='"+l+"'>"+n+"</label>'")[t?"insertAfter":"insertBefore"](a.wrapper))},_wrapper:function(){var e=this.element,t=e[0],n=e.wrap("<span class='k-input k-maskedtextbox'></span>").parent();n[0].style.cssText=t.style.cssText,t.style.width="100%",this.wrapper=n.addClass(t.className).removeClass("input-validation-error")},_blinkInvalidState:function(){var e=this;e._addInvalidState(),clearTimeout(e._invalidStateTimeout),e._invalidStateTimeout=_(e._removeInvalidState.bind(e),100)},_addInvalidState:function(){this.wrapper.addClass(h),this._validationIcon.removeClass("k-hidden")},_removeInvalidState:function(){var e=this;e.wrapper.removeClass(h),e._validationIcon.addClass("k-hidden"),e._invalidStateTimeout=null},_tokenize:function(){for(var e,t,n=[],a=0,i=(this.options.mask||"").split(""),s=i.length,l=0,r="",u=this.options.promptChar,d=o.getCulture(this.options.culture).numberFormat,p=this._rules;l<s;){if(t=p[e=i[l]])n[a]=t,r+=u,a+=1;else{"."===e||","===e?e=d[e]:"$"===e?e=d.currency.symbol:"\\"===e&&(e=i[l+=1]);for(var _=0,f=(e=e.split("")).length;_<f;_++)n[a]=e[_],r+=e[_],a+=1}l++}this.tokens=n,this._emptyMask=r,this._maskLength=r.length}});function L(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}o.cssProperties.registerPrefix("MaskedTextBox","k-input-"),o.cssProperties.registerValues("MaskedTextBox",[{prop:"rounded",values:o.cssProperties.roundedValues.concat([["full","full"]])}]),r.plugin(I)}(window.kendo.jQuery);var o=kendo;e.__meta__={id:"maskedtextbox",name:"MaskedTextBox",category:"web",description:"The MaskedTextBox widget allows to specify a mask type on an input field.",depends:["core","floatinglabel","icons","prefix-suffix-containers.chunk"]},e.default=o,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.maskedtextbox.min.js.map