kendo-ui-core
Version:
3 lines (2 loc) • 16.8 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("kendo.list.js"),require("kendo.mobile.scroller.js"),require("kendo.virtuallist.js"),require("kendo.html.button.js")):"function"==typeof define&&define.amd?define(["kendo.list.min","kendo.mobile.scroller.min","kendo.virtuallist.min","kendo.html.button.min"],t):((e="undefined"!=typeof globalThis?globalThis:e||self).kendocombobox=e.kendocombobox||{},e.kendocombobox.js=t())}(this,(function(){return function(e,t){var i=window.kendo,n=i.htmlEncode,o=i.ui,s=i.html,l=o.List,a=o.Select,r=i.caret,u=i.support,c=u.placeholder,d=i._activeElement,p=i.keys,_=".kendoComboBox",f=_+"FocusEvent",h="click"+_,g="mousedown"+_,v="disabled",m="readonly",x="change",b="k-focus",y="k-disabled",I="aria-disabled",w="aria-readonly",V="filter",T="accept",C="rebind",k="mouseenter"+_+" mouseleave"+_,F=/(\r\n|\n|\r)/gm,B=[16,17,18,19,20,33,34,37,39,45,91,92,144,145],S=a.extend({init:function(t,n){var o,s=this;s.ns=_,n=Array.isArray(n)?{dataSource:n}:n,a.fn.init.call(s,t,n),n=s.options,t=s.element.on("focus"+_,s._focusHandler.bind(s)),n.placeholder=n.placeholder||t.attr("placeholder"),s._reset(),s._wrapper(),s._input(),s._clearButton(),s._tabindex(s.input),s._popup(),s._dataSource(),s._ignoreCase(),s._enable(),s._attachFocusEvents(),s._oldIndex=s.selectedIndex=-1,s._initialIndex=n.index,s.requireValueMapper(s.options),s._initList(),s._cascade(),n.autoBind?s._filterSource():(!(o=n.text)&&s._isSelect&&(o=t.children(":selected").text()),o&&s._setText(o)),o||s._placeholder(),e(s.element).parents("fieldset").is(":disabled")&&s.enable(!1),i.notify(s),s._toggleCloseVisibility(),s._applyCssClasses(),n.label&&s._label(),s._aria()},options:{name:"ComboBox",enabled:!0,index:-1,text:null,value:null,autoBind:!0,delay:200,dataTextField:"",dataValueField:"",minLength:1,enforceMinLength:!1,height:200,highlightFirst:!0,filter:"none",placeholder:"",suggest:!1,cascadeFrom:"",cascadeFromField:"",cascadeFromParentField:"",cascadeOnCustomValue:!1,ignoreCase:!0,animation:{},virtual:!1,template:null,groupTemplate:function(e){return n(e)},fixedGroupTemplate:function(e){return n(e)},clearButton:!0,syncValueAndText:!0,autoWidth:!1,popup:null,size:"medium",fillMode:"solid",rounded:"medium",label:null,clearOnEscape:!0},events:["open","close",x,"select","filtering","dataBinding","dataBound","cascade","set"],setOptions:function(e){var t=this._listOptions(e);a.fn.setOptions.call(this,e),this.listView.setOptions(t),this._accessors(),this._aria(),this._clearButton()},destroy:function(){var e=this;e.input.off(_),e.input.off(f),e.element.off(_),e.wrapper.off(_),clearTimeout(e._pasteTimeout),e.filterInput&&e.filterInput.off(_),e._arrow.off(h+" "+g),e._clear.off(h+" "+g),a.fn.destroy.call(e)},_onActionSheetCreate:function(){var e=this;e.filterInput&&(e.filterInput.on("keydown"+_,e._keydown.bind(e)).on("input"+_,e._search.bind(e)).on("paste"+_,e._inputPaste.bind(e)).attr({role:"combobox","aria-expanded":!1}),e.popup.bind("activate",(function(){e.filterInput.val(e.input.val()),e.filterInput.trigger("focus")})),e.popup.bind("deactivate",(function(){e.input.trigger("focus")})))},_onCloseButtonPressed:function(){var e=this,t=e.options.dataTextField||"text";if(!e.listView.focus()){if((e._syncValueAndText()||e._isSelect)&&(!e.dataItem()||e.dataItem()[t]!==e.input.val())){var i=e.filterInput&&d()===e.filterInput[0]?e.filterInput:e.input;e._accessor(i.val())}e.options.highlightFirst?(e.listView.value(e.input.val()),e._blur()):e._oldText=e.text()}},_isValueChanged:function(e){return e!==l.unifyType(this._old,typeof e)&&e!==l.unifyType(this._oldText,typeof e)},_change:function(){var e=this,t=e.text(),i=t&&t!==e._oldText&&t!==e.options.placeholder,n=e.selectedIndex,o=-1===n;if(e.filterInput&&d()===e.filterInput[0]&&o&&i&&e.input.val(e.filterInput.val()),!e.options.syncValueAndText&&!e.value()&&o&&i)return e._old="",e._oldIndex=n,e._oldText=t,e._typing||e.element.trigger(x),e.trigger(x),void(e._typing=!1);a.fn._change.call(e),e._oldText=e.text&&e.text(),e._toggleCloseVisibility()},_attachFocusEvents:function(){var e=this;e.input.on("focus"+f,e._inputFocus.bind(e)).on("focusout"+f,e._inputFocusout.bind(e))},_focusHandler:function(e){e.target===this.element[0]&&this.input.trigger("focus")},_arrowClick:function(){this._toggle()},_inputFocus:function(){this.wrapper.addClass(b),this._placeholder(!1)},_inputFocusout:function(t){var i=this,n=i.value(),o=!e(t.relatedTarget).closest(".k-clear-value").length;if(!i.filterInput||t.relatedTarget!==i.filterInput[0]){i._userTriggered=!0,i.wrapper.removeClass(b),clearTimeout(i._typingTimeout),i._typingTimeout=null,o&&i.text(i.text());var s=i._focus(),l=this.listView.dataItemByIndex(this.listView.getElementIndex(s));n!==i.value()&&i.trigger("select",{dataItem:l,item:s})?i.value(n):(i._placeholder(),i._valueBeforeCascade=i._old,o&&(i._blur(),i.element.trigger("blur")))}},_inputPaste:function(){var e=this;clearTimeout(e._pasteTimeout),e._pasteTimeout=null,e._pasteTimeout=setTimeout((function(){e.search()}))},_editable:function(e){var t=this,i=e.disable,n=e.readonly,o=t.wrapper.off(_),s=t.element.add(t.input.off(_)),l=t._arrow.off(h+" "+g),a=t._clear;n||i?(o.addClass(i?y:"").removeClass(i?"":y),s.attr(v,i).attr(m,n).attr(I,i).attr(w,n)):(o.removeClass(y).on(k,t._toggleHover),s.prop(v,!1).prop(m,!1).attr(I,!1).attr(w,!1),l.on(h,t._arrowClick.bind(t)).on(g,(function(e){e.preventDefault()})),a.on(h+" touchend"+_,t._clearValue.bind(t)),t.input.on("keydown"+_,t._keydown.bind(t)).on("input"+_,t._search.bind(t)).on("paste"+_,t._inputPaste.bind(t)),t.wrapper.on(h+_,t._focusHandler.bind(t))),t._toggleCloseVisibility()},open:function(){var e=this,t=e._state,i=!!e.dataSource.filter()&&e.dataSource.filter().filters.length>0,n=!e.ul.find(e.listView.focus()).length;e.popup.visible()||(!e.listView.bound()&&t!==V||t===T?(e._open=!0,e._state=C,1!==e.options.minLength&&!i||i&&e.value()&&-1===e.selectedIndex?(e.refresh(),e._openPopup(),this.options.virtual||e.listView.bound(!1)):e._filterSource()):e._allowOpening()&&(e.popup._hovered=!0,e._openPopup(),e.options.virtual?e._focusItem():n&&e.options.highlightFirst&&e.listView.focus(0)))},_scrollToFocusedItem:function(){var e=this.listView;e.scrollToIndex(e.getElementIndex(e.focus()))},_openPopup:function(){this.popup.one("activate",this._scrollToFocusedItem.bind(this)),this.popup.open()},_updateSelectionState:function(){var e=this,i=e.options.text,n=e.options.value;e.listView.isFiltered()||(-1===e.selectedIndex?(i!==t&&null!==i||(i=n),e._accessor(n),e.input.val(i||e.input.val()),e._placeholder()):-1===e._oldIndex&&(e._oldIndex=e.selectedIndex))},_buildOptions:function(e){var i=this;if(i._isSelect){var n=i._customOption;i._state===C&&(i._state=""),i._customOption=t,i._options(e,"",i.value()),n&&n[0].selected&&!i.listView._emptySearch&&i._custom(n.val())}},_updateSelection:function(){var t=this,i=t.listView,n=t._initialIndex,o=null!==n&&n>-1;if(t._state===V)e(i.focus()).removeClass("k-selected");else if(!t._fetch){i.value().length||(o?t.select(n):t._accessor()&&i.value(t._accessor())),t._initialIndex=null;var s=i.selectedDataItems()[0];s&&(t._value(s)!==t.value()?t._custom(t._value(s)):t._value(s)!==t.element[0].value&&t._accessor(t._value(s)),t.text()&&t.text()!==t._text(s)&&t._selectValue(s))}},_updateItemFocus:function(){var e=this.listView;this.options.highlightFirst?e.focus()||e.focusIndex()||e.focus(0):e.focus(-1)},_listBound:function(){var e=this,i=e.input[0]===d()||e.filterInput&&e.filterInput[0]===d(),n=e.dataSource.flatView(),o=e.listView.skip(),s=n.length,l=e.dataSource._group?e.dataSource._group.length:0,a=o===t||0===o;e._presetValue=!1,e._renderFooter(),e._renderNoData(),e._toggleNoData(!s),e._toggleHeader(!!l&&!!s),e._resizePopup(),e.popup.position(),e._buildOptions(n),e._updateSelection(),n.length&&a&&(e._updateItemFocus(),e.options.suggest&&i&&e.input.val()&&e.suggest(n[0])),e._open&&(e._open=!1,e._typingTimeout&&!i?e.popup.close():e.toggle(e._allowOpening()),e._typingTimeout=null),e._hideBusy(),e.trigger("dataBound")},_listChange:function(){this._selectValue(this.listView.selectedDataItems()[0]),this._presetValue&&(this._oldIndex=this.selectedIndex)},_get:function(e){var t,i,n;if("function"==typeof e){for(t=this.dataSource.flatView(),n=0;n<t.length;n++)if(e(t[n])){e=n,i=!0;break}i||(e=-1)}return this.dataSource.total()||e||(e=-1),e},_select:function(e,t){var i=this;return-1===(e=i._get(e))&&(i.input[0].value="",i._accessor("")),i.listView.select(e).done((function(){t||i._state!==V||(i._state=T),i._toggleCloseVisibility()}))},_selectValue:function(e){var i=this.listView.select(),n="",o="";(i=i[i.length-1])===t&&(i=-1),this.selectedIndex=i,this.listView.isFiltered()&&-1!==i&&(this._valueBeforeCascade=this._old),-1!==i||e?((e||0===e)&&(n=this._dataValue(e),o=this._text(e)),null===n&&(n="")):(this.options.syncValueAndText?n=o=this.options.dataTextField===this.options.dataValueField?this._accessor():this.input[0].value:o=this.text(),this.listView.focus(-1)),this._setDomInputValue(o),this._accessor(n!==t?n:o,i),this._placeholder(),this._triggerCascade()},_setDomInputValue:function(e){var t,i=this,n=r(this.input);if(n&&n.length&&(t=n[0]),this._prev=this.input[0].value=e,t&&-1===this.selectedIndex){var o=u.mobileOS;o.wp||o.android?setTimeout((function(){i.input[0].setSelectionRange(t,t)}),0):this.input[0].setSelectionRange(t,t)}},refresh:function(){this.listView.refresh()},_toggleCloseVisibility:function(){var e=this.element.is(":disabled")||this.element.is("[readonly]");this.text()&&!e?this._showClear():this._hideClear()},suggest:function(e){var i,n=this,o=n.input[0],s=n.text(),a=r(o)[0],u=n._last,c=n.dataSource.options.accentFoldingFiltering;u!=p.BACKSPACE&&u!=p.DELETE?("string"!=typeof(e=e||"")&&(e[0]&&(e=n.dataSource.view()[l.inArray(e[0],n.ul[0])]),e=e?n._text(e):""),a<=0&&(a=(c?s.toLocaleLowerCase(c):s.toLowerCase()).indexOf(c?e.toLocaleLowerCase(c):e.toLowerCase())+1),e?(e=e.toString(),(i=(c?e.toLocaleLowerCase(c):e.toLowerCase()).indexOf(c?s.toLocaleLowerCase(c):s.toLowerCase()))>-1&&(s+=e.substring(i+s.length))):s=s.substring(0,a),s.length===a&&e||(o.value=s,o===d()&&r(o,a,s.length))):n._last=t},text:function(e){e=null===e?"":e;var i,n,o=this,s=o.filterInput&&o.filterInput[0]===d()?o.filterInput[0]:o.input[0],a=o.options.ignoreCase,r=e;if(e===t)return s.value;!1!==o.options.autoBind||o.listView.bound()?(i=o.dataItem())&&o._text(i).replace&&o._text(i).replace(F,"")===e&&(n=o._value(i))===l.unifyType(o._old,typeof n)?o._triggerCascade():(a&&(r=r.toLowerCase()),o.dataItem()&&o._text(o.dataItem())===e||(o._select((function(e){return e=o._text(e),a&&(e=(e+"").toLowerCase()),e===r})).done((function(){o.selectedIndex<0&&(s.value=e,o.options.syncValueAndText&&o._accessor(e),o._cascadeTriggered=!0,o._triggerCascade(),o._refreshFloatingLabel()),o._prev=s.value})),o._toggleCloseVisibility())):o._setText(e)},toggle:function(e){this._toggle(e,!0)},value:function(e){var i=this,n=i.options,o=i.listView;if(e===t)return(e=i._accessor()||i.listView.value()[0])===t||null===e?"":e;i.requireValueMapper(i.options,e),i.trigger("set",{value:e}),(e!==n.value||i.input.val()!==n.text||i.options.cascadeFrom)&&(i._accessor(e),i._isFilterEnabled()&&o.bound()&&o.isFiltered()?i._clearFilter():i._fetchData(),o.value(e).done((function(){-1!==i.selectedIndex||o._selectedDataItems&&o._selectedDataItems.length||(i._accessor(e),i.input.val(e),i._placeholder(!0)),i._userTriggered?i._old=i._accessor():i._old=i._valueBeforeCascade=i._accessor(),i._oldIndex=i.selectedIndex,i._prev=i._oldText=i.input.val(),i._state===V&&(i._state=T),i._toggleCloseVisibility(),i._refreshFloatingLabel()})))},_hideBusy:function(){var e=this;clearTimeout(e._busy),e._arrowIcon.removeClass("k-i-loading k-input-loading-icon"),e._focused.attr("aria-busy",!1),e._busy=null,e._toggleCloseVisibility()},_click:function(e){var t=this,i=e.item,n=t.listView.dataItemByIndex(t.listView.getElementIndex(i)),o=!0;e.preventDefault(),n&&((o=t._value(n)!==l.unifyType(t.value(),typeof t._value(n)))||t.input.val(t._text(n))),o&&t.trigger("select",{dataItem:n,item:i})?t.close():(t._userTriggered=!0,t._select(i).done((function(){t._blur()})))},_syncValueAndText:function(){return this.options.syncValueAndText},_inputValue:function(){return this.text()},_searchByWord:function(e){var i=this,n=i.options,o=i.dataSource,s=n.ignoreCase;if(s&&(e=e.toLowerCase()),i.ul[0].firstChild){this.listView.focus(this._get((function(n){var o=i._text(n);if(o!==t)return(""==(o+="")||""!==e)&&(s&&(o=o.toLowerCase()),0===o.indexOf(e))})));var l=this.listView.focus();l&&(n.suggest&&i.suggest(l),this.open()),this.options.highlightFirst&&!e&&this.listView.focusFirst()}else o.one(x,(function(){o.view()[0]&&i.search(e)})).fetch()},_input:function(){var e,t,i,n=this,o=n.element.removeClass("k-input-inner")[0],l=o.accessKey,a=n.wrapper,r="input.k-input-inner",u=o.name||"",d=n.options;u&&(u='name="'+u+'_input" '),(e=a.find(r))[0]||(i=s.renderButton('<button type="button" class="k-input-button" aria-label="expand combobox"></button>',{icon:"caret-alt-down",size:d.size,fillMode:d.fillMode,shape:"none",rounded:"none"}),a.append("<input "+u+'class="k-input-inner" type="text" autocomplete="off"/>').append(i).append(n.element),e=a.find(r)),e[0].style.cssText=o.style.cssText,e[0].title=o.title,(t=parseInt(this.element.prop("maxlength")||this.element.attr("maxlength"),10))>-1&&(e[0].maxLength=t),e.addClass(o.className).css({width:"",height:o.style.height,position:""}).attr({role:"combobox","aria-expanded":!1}).show(),c&&e.attr("placeholder",n.options.placeholder),l&&(o.accessKey="",e[0].accessKey=l),n._focused=n.input=e,n._arrow=a.find(".k-input-button").attr({role:"button",tabIndex:-1}),n._arrowIcon=n._arrow.find(".k-icon, .k-svg-icon")},_clearButton:function(){l.fn._clearButton.call(this),this.options.clearButton&&(this._clear.insertAfter(this.input),this.wrapper.addClass("k-combobox-clearable"))},_keydown:function(e){var t=this,i=e.keyCode,n=t.options.dataTextField||"text",o=i>=112&&i<=135,s=B.indexOf(i)>-1;if(t._last=i,clearTimeout(t._typingTimeout),t._typingTimeout=null,i===p.HOME)t._firstItem();else if(i===p.END)t._lastItem();else if(i===p.ENTER||i===p.TAB&&t.popup.visible()){var a=t.listView.focus(),r=t.dataItem(),u=!0;if(t.popup.visible()||r&&t.text()===t._text(r)||(a=null),a){if(t.popup.visible()&&e.preventDefault(),(r=t.listView.dataItemByIndex(t.listView.getElementIndex(a)))&&(u=t._value(r)!==l.unifyType(t.value(),typeof t._value(r))),u&&t.trigger("select",{dataItem:r,item:a}))return;t._userTriggered=!0,t._select(a).done((function(){t._blur(),t._valueBeforeCascade=t._old=t.value()}))}else{if((t._syncValueAndText()||t._isSelect)&&(!t.dataItem()||t.dataItem()[n]!==t.input.val())){var c=t.filterInput&&d()===t.filterInput[0]?t.filterInput:t.input;t._accessor(c.val())}t.options.highlightFirst?(t.listView.value(t.input.val()),t._blur()):t._oldText=t.text()}}else i==p.TAB||t._move(e)||s||o||e.ctrlKey?t.options.clearOnEscape&&i===p.ESC&&!t.popup.visible()&&t.text()&&t._clearValue():t._search()},_placeholder:function(e){if(!c){var i,n=this,o=n.input,s=n.options.placeholder;if(s){if(i=n.value(),e===t&&(e=!i),o.toggleClass("k-readonly",e),!e){if(i)return;s=""}o.val(s),s||o[0]!==d()||r(o[0],0,0)}}},_search:function(){var e=this;clearTimeout(e._typingTimeout),e._typingTimeout=setTimeout((function(){var i=e.text();""!==i&&e._prev!==i?(e._prev=i,"none"===e.options.filter&&e.options.virtual&&e.listView.select(-1),e.search(i),e._toggleCloseVisibility()):""===i&&""!==e._prev&&e._prev!==t&&(e._clearValue(),e._open=!0,e._state=C),e._typingTimeout=null}),e.options.delay)},_setText:function(e){this.input.val(e),this._prev=e},_wrapper:function(){var e=this.element,t=e.parent();t.is("span.k-input")||((t=e.hide().wrap("<span />").parent())[0].style.cssText=e[0].style.cssText),this.wrapper=t.addClass("k-input k-combobox").addClass(e[0].className).removeClass("input-validation-error").css("display","")},_clearSelection:function(e,t){var i=e.value(),n=i&&-1===e.selectedIndex;-1==this.selectedIndex&&this.value()||(t||!i||n)&&(this.options.value="",this.value(""))},_preselect:function(e,t){this.input.val(t),this._accessor(e),this._old=this._accessor(),this._oldIndex=this.selectedIndex,this.listView.setValue(e),this._placeholder(),this._initialIndex=null,this._presetValue=!0,this._toggleCloseVisibility()},_clearText:function(){this._old=this.value(),this.text("")},_clearValue:function(){var e=this,t=e.filterInput&&e.filterInput[0]===d()?e.filterInput:e.input;a.fn._clearValue.call(this),t.trigger("focus")}});o.plugin(S),i.cssProperties.registerPrefix("ComboBox","k-input-"),i.cssProperties.registerValues("ComboBox",[{prop:"rounded",values:i.cssProperties.roundedValues.concat([["full","full"]])}])}(window.kendo.jQuery),kendo}));
//# sourceMappingURL=kendo.combobox.min.js.map