UNPKG

@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) 18.2 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.list.js"),require("kendo.mobile.scroller.js"),require("kendo.virtuallist.js"),require("kendo.html.button.js"),require("kendo.prefix-suffix-containers.chunk.js")):"function"==typeof define&&define.amd?define(["exports","kendo.list.min","kendo.mobile.scroller.min","kendo.virtuallist.min","kendo.html.button.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.Combobox={}),e.kendo._globals.List,e.kendo._globals.MobileScroller,e.kendo._globals.Virtuallist,e.kendo._globals.HtmlButton,e.kendo._globals.PrefixSuffixContainersChunk)}(this,(function(e,t,i,n,o,s){!function(e,t){var i=window.kendo,n=i.htmlEncode,o=i.ui,l=i.html,a=o.List,r=o.Select,u=i.caret,c=i.support,p=c.placeholder,d=i._activeElement,_=i.keys,f=".kendoComboBox",h=f+"FocusEvent",g="click"+f,v="mousedown"+f,m="disabled",x="readonly",b="change",y="k-focus",w="k-disabled",I="aria-disabled",V="aria-readonly",T="filter",C="accept",k="rebind",F="mouseenter"+f+" mouseleave"+f,S=/(\r\n|\n|\r)/gm,B=[16,17,18,19,20,33,34,37,39,45,91,92,144,145],L=r.extend({init:function(t,n){var o,l=this;l.ns=f,n=Array.isArray(n)?{dataSource:n}:n,r.fn.init.call(l,t,n),n=l.options,t=l.element.on("focus"+f,l._focusHandler.bind(l)),n.placeholder=n.placeholder||t.attr("placeholder"),n.inputMode=n.inputMode||t.attr("inputmode")||"text",l._reset(),l._wrapper(),l._input(),l._clearButton(),l._tabindex(l.input),l._popup(),l._dataSource(),l._ignoreCase(),l._enable(),l._attachFocusEvents(),l._oldIndex=l.selectedIndex=-1,l._initialIndex=n.index,l.requireValueMapper(l.options),l._initList(),l._cascade(),n.autoBind?l._filterSource():(!(o=n.text)&&l._isSelect&&(o=t.children(":selected").text()),o&&l._setText(o)),o||l._placeholder(),e(l.element).parents("fieldset").is(":disabled")&&l.enable(!1),s.a({widget:l,wrapper:l.wrapper,options:l.options,prefixInsertBefore:l.input,suffixInsertAfter:l._clear.parent().length?l._clear:l.input}),i.notify(l),l._toggleCloseVisibility(),l._applyCssClasses(),n.label&&l._label(),l._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:e=>n(e),fixedGroupTemplate:e=>n(e),prefixOptions:{separator:!0},suffixOptions:{separator:!0},clearButton:!0,syncValueAndText:!0,autoWidth:!1,popup:null,size:"medium",fillMode:"solid",rounded:"medium",label:null,adaptiveTitle:null,adaptiveSubtitle:null,clearOnEscape:!0,_removeDataItems:!0,_shouldRefresh:!0},events:["open","close",b,"select","filtering","dataBinding","dataBound","cascade","set"],setOptions:function(e){var t=this._listOptions(e);r.fn.setOptions.call(this,e),this.listView.setOptions(t),this._accessors(),this._aria(),this._clearButton()},destroy:function(){var e=this;e.input.off(f),e.input.off(h),e.element.off(f),e.wrapper.off(f),clearTimeout(e._pasteTimeout),e.filterInput&&e.filterInput.off(f),e._arrow.off(g+" "+v),e._clear.off(g+" "+v),r.fn.destroy.call(e)},_popup:function(){r.fn._popup.call(this),this.popup.element.addClass("k-combobox-popup")},_onActionSheetCreate:function(){var e=this;e._unboundClick=!0,e.input.on("click",e._arrowClick.bind(e)),e.filterInput&&(e.filterInput.on("keydown"+f,e._keydown.bind(e)).on("input"+f,e._search.bind(e)).on("paste"+f,e._inputPaste.bind(e)).attr({role:"combobox","aria-expanded":!1}),e.popup.bind("activate",(()=>{e.filterInput.val(e.input.val()),e.filterInput.trigger("focus")})),e.popup.bind("deactivate",(()=>{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!==a.unifyType(this._old,typeof e)&&e!==a.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(b),e.trigger(b),void(e._typing=!1);r.fn._change.call(e),e._oldText=e.text&&e.text(),e._toggleCloseVisibility()},_attachFocusEvents:function(){var e=this;e.input.on("focus"+h,e._inputFocus.bind(e)).on("focusout"+h,e._inputFocusout.bind(e))},_focusHandler:function(e){e.target===this.element[0]&&this.input.trigger("focus")},_arrowClick:function(){this._toggle()},_inputFocus:function(){const e=this;e._hasActionSheet()?e.input.attr("readonly",!0):e.options.readonly||e.input.removeAttr("readonly"),e.wrapper.addClass(y),e._placeholder(!1)},_inputFocusout:function(t){var i=this,n=i.value();const o=!e(t.relatedTarget).closest(".k-clear-value").length||!e(t.relatedTarget).is(i._clear)&&e(t.relatedTarget).hasClass("k-clear-value");if(!i.filterInput||t.relatedTarget!==i.filterInput[0]){i._userTriggered=!0,i.wrapper.removeClass(y),clearTimeout(i._typingTimeout),i._typingTimeout=null,o&&i.text(i.text());var s=i._focus(),l=this.listView.dataItemByIndex(this.listView.getElementIndex(s)),a=i.select();n!==i.value()&&-1!==a&&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(f),s=t.element.add(t.input.off(f)),l=t._arrow.off(g+" "+v),a=t._clear;n||i?(o.addClass(i?w:"").removeClass(i?"":w),s.attr(m,i).attr(x,n).attr(I,i).attr(V,n)):(o.removeClass(w).on(F,t._toggleHover),s.prop(m,!1).prop(x,!1).attr(I,!1).attr(V,!1),l.on(g,t._arrowClick.bind(t)).on(v,(function(e){e.preventDefault()})),a.on(g+" touchend"+f,t._clearValue.bind(t)),t.input.on("keydown"+f,t._keydown.bind(t)).on("input"+f,t._search.bind(t)).on("paste"+f,t._inputPaste.bind(t)),t.wrapper.on(g+f,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!==T||t===C?(e._open=!0,e._state=k,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===k&&(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===T)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!==T||(i._state=C),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=u(this.input);if(n&&n.length&&(t=n[0]),this._prev=this.input[0].value=e,t&&-1===this.selectedIndex){var o=c.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(),l=u(o)[0],r=n._last,c=n.dataSource.options.accentFoldingFiltering;r!=_.BACKSPACE&&r!=_.DELETE?("string"!=typeof(e=e||"")&&(e[0]&&(e=n.dataSource.view()[a.inArray(e[0],n.ul[0])]),e=e?n._text(e):""),l<=0&&(l=(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,l),s.length===l&&e||(o.value=s,o===d()&&u(o,l,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],l=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(S,"")===e&&(n=o._value(i))===a.unifyType(o._old,typeof n)?o._triggerCascade():(l&&(r=r.toLowerCase()),o.dataItem()&&o._text(o.dataItem())===e||(o._select((function(e){return e=o._text(e),l&&(e=(e+"").toLowerCase()),e===r})).done((function(){o.selectedIndex<0&&(s.value=e,o.options.syncValueAndText&&o._accessor(e),o._isValueChanged(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===T&&(i._state=C),i._toggleCloseVisibility(),i._refreshFloatingLabel()})))},_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)!==a.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(b,(function(){o.view()[0]&&i.search(e)})).fetch()},_input:function(){var e,t,n,o=this,s=o.element.removeClass("k-input-inner")[0],a=s.accessKey,r=o.wrapper,u="input.k-input-inner",c=s.name||"",d=o.options;c&&(c='name="'+c+'_input" '),(e=r.find(u))[0]||(n=l.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"}),r.append("<input "+c+'class="k-input-inner" type="text" autocomplete="off"/>').append(n).append(o.element),e=r.find(u)),e[0].style.cssText=s.style.cssText,e[0].title=s.title,(t=parseInt(this.element.prop("maxlength")||this.element.attr("maxlength"),10))>-1&&(e[0].maxLength=t),e.addClass(s.className).css({width:"",height:s.style.height,position:""}).attr({role:"combobox","aria-expanded":!1,inputmode:d.inputMode}).show(),e.attr(i.attr("skip"),!0),p&&e.attr("placeholder",o.options.placeholder),a&&(s.accessKey="",e[0].accessKey=a),o._focused=o.input=e,o._arrow=r.find(".k-input-button").attr({role:"button",tabIndex:-1}),o._arrowIcon=o._arrow.find(".k-icon, .k-svg-icon")},_clearButton:function(){a.fn._clearButton.call(this),this.options.clearButton&&this._clear.insertAfter(this.input)},_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===_.HOME)t._firstItem();else if(i===_.END)t._lastItem();else if(i===_.ENTER||i===_.TAB&&t.popup.visible()){var l=t.listView.focus(),r=t.dataItem(),u=!0;if(t.popup.visible()||r&&t.text()===t._text(r)||(l=null),l){if(t.popup.visible()&&e.preventDefault(),(r=t.listView.dataItemByIndex(t.listView.getElementIndex(l)))&&(u=t._value(r)!==a.unifyType(t.value(),typeof t._value(r))),u&&t.trigger("select",{dataItem:r,item:l}))return;t._userTriggered=!0,t._select(l).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==_.TAB||t._move(e)||s||o||e.ctrlKey?t.options.clearOnEscape&&i===_.ESC&&!t.popup.visible()&&t.text()&&t._clearValue():t._search()},_placeholder:function(e){if(!p){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()||u(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=k),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;r.fn._clearValue.call(this),t.trigger("focus")}});o.plugin(L),i.cssProperties.registerPrefix("ComboBox","k-input-"),i.cssProperties.registerValues("ComboBox",[{prop:"rounded",values:i.cssProperties.roundedValues.concat([["full","full"]])}])}(window.kendo.jQuery);var l=kendo;e.__meta__={id:"combobox",name:"ComboBox",category:"web",description:"The ComboBox widget allows the selection from pre-defined values or entering a new value.",depends:["list","html.button","prefix-suffix-containers.chunk"],features:[{id:"mobile-scroller",name:"Mobile scroller",description:"Support for kinetic scrolling in mobile device",depends:["mobile.scroller"]},{id:"virtualization",name:"VirtualList",description:"Support for virtualization",depends:["virtuallist"]}]},e.default=l,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=kendo.combobox.min.js.map