UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

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