{"version":3,"sources":["webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js"],"names":["extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","dropDownListClasses","root","hover","selected","rtl","li","disable","disabled","base","focus","content","input","inputFocus","icon","iconAnimation","value","device","backIcon","filterBarClearIcon","filterInput","resizeIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","virtualList","inputObject","container","buttons","DropDownList","_super","options","element","_this","call","isListSearched","preventChange","isTouched","isFocused","autoFill","isUpdateHeaderHeight","isUpdateFooterHeight","isReactTemplateUpdate","preRender","valueTempElement","style","opacity","initializeData","activeIndex","index","queryString","isPopupOpen","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initialRemoteRender","isNotSearchList","isTyped","isSelected","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","down","up","pageUp","pageDown","open","close","hide","space","viewPortInfo","currentPageNumber","direction","sentinelInfo","offsets","startIndex","endIndex","itemCount","setZIndex","popupObj","setProperties","zIndex","requiredModules","modules","enableVirtualization","push","args","member","renderList","e","isEmptyData","render","dataSource","totalItemCount","isFiltering","getModuleName","UpdateSkeleton","liCollections","list","querySelectorAll","ulElement","querySelector","unWireListEvents","wireListEvents","floatLabelChange","floatLabelType","floatElement","inputWrapper","inputElement","resetHandler","preventDefault","clearAll","scrollTop","virtualListInfo","previousStartIndex","previousEndIndex","resetFocusElement","removeHover","removeSelection","removeFocus","fields","skeletonCount","classList","add","properties","previousItemData","itemData","isActive","resetSelection","dataItem","getItemData","allowObjectBinding","isObjectInArray","allowCustom","getDataByValue","checkAndResetCache","updateInitialData","onChangeEvent","allowFiltering","onActionComplete","cloneNode","selectedLI","resetList","innerHTML","text","item","display","setSelection","updateIconState","cloneElements","setHTMLAttributes","keys","htmlAttributes","_i","_a","htmlAttr","updatedClassValue","replace","trim","split","enabled","setEnable","setAttribute","readonly","defaultAttr","indexOf","setPlaceholder","dataBind","removeAttribute","getAriaAttributes","id","setEnableRtl","parentElement","enableRtl","setEnabled","targetElement","tabIndex","hidePopup","getPersistData","addOnPersist","getLocaleName","preventTabIndex","getNgDirective","getElementByText","getElementByValue","getValueByText","listItems_1","getItems","liItem","getFormattedValue","getAttribute","initValue","virtualItemStartIndex","virtualItemEndIndex","updateValues","isDisableItemValue","objectValue","JSON","parse","stringify","isDisabledItemByIndex","getIndexByValue","selectedValueInfo","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","document","body","contains","activeElement","focusOutAction","isRequested","focusOut","onFocusOut","dispatchEvent","tagName","clearButton","trigger","onFocus","event","resizingWireEvent","resizePopup","stopResizing","resizingUnWireEvent","remove","resetValueHandler","formElement","val","wireEvent","dropDownClick","focusIn","onSearch","window","windowResize","bindCommonEvent","isDevice","keyboardModule","keyAction","mobileKeyActionHandler","bind","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","destroy","onMouseClick","onMouseOver","onMouseLeave","charCode","undefined","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","startResizing","isResizing","clientX","MouseEvent","touches","clientY","originalWidth","offsetWidth","originalHeight","offsetHeight","originalMouseX","originalMouseY","dx","dy","minWidth","parseInt","getComputedStyle","minHeight","resizeWidth","Math","max","resizeHeight","width","height","maxHeight","fixedHeaderElement","keyboardEvent","isValidLI","isDisabledElement","history","back","closePopup","currentLi","setHover","hoveredItem","hasAttribute","updateIncrementalItemIndex","incrementalStartIndex","incrementalEndIndex","updatingincrementalindex","queryStringUpdated","getElementsByClassName","currentValue","textContent","incrementalQueryString","String","fromCharCode","incrementalPreQueryString","toLocaleLowerCase","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","toString","getTransformValues","setScrollPosition","groupBy","selectedLiOffsetTop","offsetTop","enableLiCollections","hideSpinner","spinnerElement","showSpinner","filterInputObj","createElement","isPreventKeyAction","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","type","keyCode","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","isMouseScrollAction","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","filterIndex","itemIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","updateVirtualItemIndex","query","selectedData","handleVirtualKeyboardActions","pageCount","focusAtFirstElement","getIndexByValueFilter","findLi","steps","previousItem","validIndex","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","info","name","activeStateChange","which","button","proxy_1","duration","itemTemplate","setTimeout","isReact","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","items","detachChanges","eventArgs","cancel","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","isObjectCustomValue","getItem","isPrimitiveData","virtualGroupDataSource","executeLocal","where","previousSelectedLI","dropdownCompiler","dropdownTemplate","checkTemplate","exception","clearTemplate","className","insertBefore","valuecheck","valueCompTemp","valueTemplateId","isStringTemplate","renderReactTemplates","selectedItems","dataValue","dataText","eve","isCustomValue","datas","foundIndex","findIndex","data","detachChangeEvent","defineProperties","enumerable","preItems","isAngular","selectedElement","option","appendChild","onFilterUp","ctrlKey","filterArgs","firstItem","searchLists","getInitialData","executeCloneElements","getFilteringSkeletonCount","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","getQuery","filterQuery","clone","filterType","dataType","typeOfData","typeof","ignoreCase","ignoreAccent","customFilterQuery","takeValue","getTakeValue","alreadySkipAdded","queryElements","queries","fn","queryTakeValue","querySkipValue","nos","splice","skip","isIncrementalRequest","take","requiresCount","start","abs","selectionStart","selectionEnd","visibility","isDataFetched","isRequesting","eventArgs_1","preventDefaultAction","updateData","filteringAction","baseEventArgs","filter","isNoData","noData","isPreventScrollAction","popupContentElement","virtualContentElement","cssText","virtualElement","GetVirtualTrackHeight","focusIndexItem","setSearchBox","popupElement","attrs","parentNode","isDeviceFullScreen","createInput","placeholder","filterBarPlaceholder","cssClass","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","onActionFailure","renderPopup","round","outerHeight","listItemHeight","count","updateActionCompleteDataValues","tempItemCount","selectedItem","updateSelectElementData","checkField_1","value_1","fieldValue_1","checkVal","some","x","executeQuery","then","result","addItem","setInputValue","isDynamicData","isValueInList","addNewItem","getSkeletonCount","findListElement","valueToFind","isArray","fieldValue","checkField","forEach","listData","newElement","value_2","updateActionCompleteData","actionCompleteDataUpdate","childNodes","updateSelection","updateSelectionList","findEle","highlightedItem","refreshPopup","initialPopupHeight","popupEle","searchBox","listContainerHeight","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","top","clientHeight","listitems","ceil","getBoundingClientRect","marginBottom","virtualItemCount","searchBoxHeight","offsetValue","left","getOffsetValue","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","popupWidth","outerWidth","collision","X","Y","position","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","getScrollableParent","scrollHandler","selectedElementID","notify","module","component","enable","scrollBottom","inputParent","popup","animation","destroyPopup","show","popupHeightValue","listHeight","allowResize","resizer","toLowerCase","paddingBottom","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","setWidth","targetType","relateTo","offsetY","offsetX","renderItems","actionList","targetExitViewport","isElementInViewport","elementRect","bottom","innerHeight","right","innerWidth","border","popupOffset","lastItem","liHeight","parseFloat","isInitial","isInitialSelection","selectedListMargin","isNaN","isUpwardScrolling","virtualListCount","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","isKeyBoardAction","isVirtualScrolling","IsScrollerAtEnd","scrollHeight","scrollStop","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","dataCount","setEleWidth","match","delay","isFilterValue","isVirtualTrackHeight","scrollableParentElements_1","dataSourceCount","animModel","fixedHeader","removeChild","rippleFun","currentData","selectData","remoteDataCount","virualElement","preselectedIndex","role","updatedCssClassValues","validationAttribute","setReadOnly","setFields","calculateWidth","updateDataAttribute","getListHeight","updateVirtualizationProperties","selectElement","selectedIndex","onselect","stopImmediatePropagation","onchange","floatLabelElement","renderComplete","listParent","listParentHeight","virtualListHeight","footercheck","footerCompTemp","footerTemplateId","headercheck","headerCompTemp","headerTemplateId","contentEle","setOldText","setOldValue","checkData","newProp","isChangeValue","isChangeText","updateDataSource","props","oldProps","isGroupChecking","setFloatingHeader","checkCustomValue","updateInputFields","onPropertyChanged","oldProp","setUpdateInitial","_loop_1","prop","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","value_3","removeFloating","addFloating","setClearButton","ddlProps","getPropObject","newProperty","oldProperty","state_1","updateListValues","updatePopupState","newClass","oldClass","isAddNewItemTemplate","invokeRenderPopup","isOpen","proxy","proxy_2","onpopstate","pushState","children","renderHightSearch","isSelectVal","blur","disableItem","HTMLLIElement","disableListItem","parsedData","clear","attrArray"],"mappings":"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","file":"d9483c7f-react.js","sourcesContent":["var __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate = this && this.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n resizeIcon: 'e-resizer-right e-icons',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isTouched = false;\n _this.isFocused = false;\n _this.autoFill = false;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n _this.isReactTemplateUpdate = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = {\n isUpdated: false\n };\n this.actionData = {\n isUpdated: false\n };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({\n 'zIndex': this.zIndex\n });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({\n args: [this],\n member: 'VirtualScroll'\n });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n } else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.fields.disabled ? this.ulElement.querySelector('.' + dropDownListClasses.li + ':not(.e-disabled)') : this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = !isNullOrUndefined(this.itemData) ? this.itemData : null;\n if (isNullOrUndefined(properties) || !isNullOrUndefined(properties) && (isNullOrUndefined(properties.dataSource) || !(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (!this.allowObjectBinding && this.previousValue === dataItem.value || this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])) {\n this.checkAndResetCache();\n if (this.enableVirtualization && this.list) {\n this.updateInitialData();\n }\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if (!isNullOrUndefined(properties) && (isNullOrUndefined(properties.dataSource) || !(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n } else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) && this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ').trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n } else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n } else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n } else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n } else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n } else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n } else {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n } else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n } else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n } else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.inputElement) && !isNullOrUndefined(this.inputElement.parentElement)) {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'false');\n this.inputWrapper.container.removeAttribute('disabled');\n }\n } else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'true');\n this.inputWrapper.container.setAttribute('disabled', '');\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n } else {\n this.updateValues();\n }\n };\n /**\n * Checks if the given value is disabled.\n *\n * @param { string | number | boolean | object } value - The value to check for disablement. Can be a string, number, boolean, or object.\n * @returns { boolean } A boolean indicating whether the value is disabled.\n */\n DropDownList.prototype.isDisableItemValue = function (value) {\n if (typeof value === 'object') {\n var objectValue = JSON.parse(JSON.stringify(value))[this.fields.value];\n return this.isDisabledItemByIndex(this.getIndexByValue(objectValue));\n }\n return this.isDisabledItemByIndex(this.getIndexByValue(value));\n };\n DropDownList.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n } else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({\n text: null\n });\n return;\n } else {\n this.setSelection(element, null);\n }\n } else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) || !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n } else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || !isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) && this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter)) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement && (document.activeElement !== target || document.activeElement === target && currentTarget.classList.contains(dropDownListClasses.inputFocus)) || isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering && currentTarget !== this.inputWrapper.container || this.getModuleName() !== 'dropdownlist' && !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n this.isFocused = false;\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = {\n isInteracted: e ? true : false,\n event: e\n };\n this.trigger('focus', args);\n }\n this.updateIconState();\n this.isFocused = true;\n };\n DropDownList.prototype.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n DropDownList.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = this.element.tagName === this.getNgDirective() ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n } else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n } else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) && !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n var clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n // Store the initial dimensions of the popup\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n // Wire up events for resizing\n this.resizingWireEvent();\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n var clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n if (this.list && this.list.parentElement) {\n // Minimum width and height (100px)\n var minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth = minWidth || 100;\n minHeight = minHeight || 120;\n // Ensure the new width and height are not less than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n // Unwire the resize event listeners\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n } else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return li && li.hasAttribute('role') && li.getAttribute('role') === 'option';\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString === '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n } else if (String.fromCharCode(e.charCode).toLocaleLowerCase() === this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n } else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if (this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount || this.incrementalEndIndex === 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex === 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n } else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n } else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if (!(this.viewPortInfo.startIndex >= index) || !(index >= this.viewPortInfo.endIndex)) {\n var startIndex = index - (this.itemCount / 2 - 2) > 0 ? index - (this.itemCount / 2 - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + (this.itemCount / 2 - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + (this.itemCount / 2 - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + this.virtualListInfo.startIndex * this.selectedLI.offsetHeight : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight;\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n } else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n } else {\n var li = void 0;\n if (this.fields.disabled) {\n var enableLiCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.e-disabled)');\n li = incrementalSearch(e.charCode, enableLiCollections, this.activeIndex, true, this.element.id);\n } else {\n li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n }\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] || !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown' || e.action === 'home' || e.action === 'end';\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || !isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0 || this.isRequested) {\n return;\n }\n if (isTabAction && this.getModuleName() !== 'autocomplete' && this.isPopupOpen || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = isNavigation || e.action === 'escape' ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n var filterIndex = this.getIndexByValue(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + this.virtualListInfo.startIndex * this.selectedLI.offsetHeight : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop - this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight;\n }\n } else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n } else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount] : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n } else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n } else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] && this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + this.virtualListInfo.startIndex * this.selectedLI.offsetHeight : this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 && this.fields.groupBy ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight;\n }\n } else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && (this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down' || this.viewPortInfo.startIndex !== 0 && e.action === 'up')) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = this.viewPortInfo.startIndex + this.itemCount < this.totalItemCount - this.itemCount ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value = this.liCollections[0].getAttribute('data-value') !== 'null' ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (selectedData) {\n this.itemData = selectedData;\n }\n } else if (e.action === 'up') {\n this.viewPortInfo.startIndex = this.viewPortInfo.startIndex - this.itemCount > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== 'null' ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id\n });\n } else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id\n });\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownListClasses.focus) || this.liCollections[index].classList.contains(dropDownListClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n if (this.getModuleName() !== 'autocomplete') {\n if (this.liCollections.length - 1 === itemIndex && e.action === 'down') {\n e.action = 'up';\n }\n if (itemIndex === 0 && e.action === 'up') {\n e.action = 'down';\n }\n }\n this.updateUpDownAction(e);\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n } else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n } else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n } else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isEditTextBox() && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0 || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 : this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() : this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ? this.activeIndex + this.getPageCount() : 2 * this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n } else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {\n var validIndex = steps >= 0 ? steps + 1 : 0;\n while (validIndex < this.liCollections.length) {\n previousItem = this.liCollections[validIndex];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n validIndex--;\n if (validIndex < 0) {\n return;\n }\n }\n }\n if (this.enableVirtualization && this.activeIndex == null) {\n previousItem = this.liCollections.length >= steps && steps >= 0 ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id\n });\n } else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id\n });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && (this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active') || this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus'))) {\n this.setSelection(previousItem, event);\n }\n } else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {\n while (steps >= 0 && steps < this.liCollections.length) {\n previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n steps++;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && this.activeIndex == null) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id\n });\n } else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id\n });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) && !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n } else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && !(this.getModuleName() === 'combobox' && !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() || document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n } else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = this.element.tagName === this.getNgDirective() && this.itemTemplate ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n proxy_1.isSecondClick = proxy_1.isReact && proxy_1.isFiltering() && proxy_1.dataSource instanceof DataManager && !proxy_1.list.querySelector('ul') ? false : true;\n }, duration);\n }\n } else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== null ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n } else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n } else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = !isNullOrUndefined(this.itemData) ? this.itemData : null;\n if (this.itemData !== selectedData) {\n this.previousValue = !isNullOrUndefined(this.itemData) ? typeof this.itemData == 'object' && !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n } else {\n this.activeIndex = this.getIndexByValue(value);\n }\n } else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n this.isTouched = !isNullOrUndefined(e);\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n } else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n } else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && this.getModuleName() === 'combobox';\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (!this.allowObjectBinding && this.previousValue === dataItem.value || this.allowObjectBinding && this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])) {\n this.isSelected = false;\n return true;\n } else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || this.isPopupOpen && this.isSelected && li.classList.contains(dropDownBaseClasses.selected))) {\n this.updateSelectedItem(li, e, false, true);\n } else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = !this.isPrimitiveData ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if (this.value === dataItem.value && this.text !== dataItem.text || this.value !== dataItem.value && this.text === dataItem.text) {\n this.setProperties({\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'value': value\n });\n }\n }\n } else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if (this.value === dataItem.value && this.text !== dataItem.text || this.value !== dataItem.value && this.text === dataItem.text) {\n this.setProperties({\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'value': value\n });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = !isNullOrUndefined(this.selectedLI) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if (!this.isPopupOpen && !isNullOrUndefined(li) || this.isPopupOpen && !isNullOrUndefined(e) && (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter')) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), {\n 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id\n });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id\n });\n } else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id\n });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = document.querySelectorAll(dropdownTemplate).length ? true : false;\n } catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', {\n className: dropDownListClasses.value\n });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n } else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = !isNullOrUndefined(dataItem) && !isUndefined(dataValue) ? dataValue : dataItem;\n var text = !isNullOrUndefined(dataItem) && !isUndefined(dataValue) ? dataText : dataItem;\n return {\n value: value,\n text: text\n };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @param {boolean} isCustomValue - Specifies whether the value is custom value or not.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({\n 'index': index,\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'value': value\n }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n } else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' || typeof this.previousItemData === 'boolean' || typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n } else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n } else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n } else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n var option = document.createElement('option');\n option.text = this.text;\n option.setAttribute('selected', '');\n this.hiddenElement.appendChild(option);\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n } else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.filterArgs = e;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40:\n //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n } else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), {\n 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id\n });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8:\n //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n } else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n } else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n if (!this.getInitialData) {\n this.searchLists(e);\n }\n if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager) || this.getModuleName() === 'autocomplete' && this.dataSource instanceof DataManager && this.totalItemCount !== 0) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n } else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13:\n //enter\n break;\n case 40: //down arrow\n case 38:\n //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9:\n //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n } else if (this.getModuleName() !== 'combobox' || this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '') {\n var fields = this.fields.text ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n } else {\n filterQuery = this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery) ? this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex !== 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n alreadySkipAdded = false;\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n } else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n } else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n } else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return {\n start: Math.abs(input.selectionStart),\n end: Math.abs(input.selectionEnd)\n };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n this.isRequesting = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = !this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '' || this.getInitialData ? false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualContentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n } else {\n this.isNotSearchList = false;\n query = this.filterInput.value.trim() === '' ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, {\n 'aria-activedescendant': 'no-record'\n });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualContentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n if (this.filterInput && this.filterInput.value === '' && this.getModuleName() === 'combobox') {\n this.executeCloneElements();\n }\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ? popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: {\n type: 'text'\n },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice && this.isDeviceFullScreen) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: {\n placeholder: this.filterBarPlaceholder\n }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n } else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n } else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n } else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n if (!isNullOrUndefined(e) && !isNullOrUndefined(e.data) && e.data.length > 1 && this.autoFill && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.inputElement.value = e.data;\n }\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n if (_this.getModuleName() === 'combobox' && _this.isFiltering() && isNullOrUndefined(_this.list)) {\n _this.renderList();\n }\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n this.getInitialData = false;\n this.isReactTemplateUpdate = true;\n this.searchLists(this.filterArgs);\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < this.itemCount * 2 && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.totalItemCount <= this.itemCount) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, {\n 'id': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-hidden': 'false',\n 'aria-label': 'listbox'\n });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ? _this.checkFieldValue(x, fieldValue_1) === value_1 : x[checkField_1] === value_1;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ? _this.checkFieldValue(x, fieldValue_1) === value_1 : x[checkField_1] === value_1;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_1))).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n } else {\n _this.updateValues();\n }\n });\n } else {\n this.updateValues();\n }\n } else {\n this.updateValues();\n }\n this.initial = false;\n } else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || !this.isCustomFilter && !this.isFilterFocus || isNullOrUndefined(this.itemData) && this.allowFiltering && (this.dataSource instanceof DataManager || !isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) && this.dataSource.length !== 0)) {\n if (this.itemTemplate && (this.element.tagName === 'EJS-COMBOBOX' || this.isReact) && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n } else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n if (this.isDynamicData) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n this.selectedLI = this.getElementByValue(currentValue);\n this.isDynamicData = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || this.allowFiltering && this.isValueInList(list, this.value)) && !this.enableVirtualization) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n var isValidAddition = !isNullOrUndefined(this.value) && selectedItem && selectedItem.getAttribute('data-value') === value.toString();\n if (isValidAddition) {\n this.addNewItem(list, selectedItem);\n }\n }\n if (!isNullOrUndefined(this.itemData) || isNullOrUndefined(this.itemData) && this.enableVirtualization) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < this.itemCount * 2 && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.totalItemCount <= this.itemCount) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n } else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n } else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount !== this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n } else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = {\n ulElement: ulElement.cloneNode(true),\n list: list,\n isUpdated: true\n };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_2 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_2 || getValue(_this.fields.value, data) === value_2;\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n } else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n } else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.enableVirtualization && !isNullOrUndefined(value) || !this.enableVirtualization ? this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({\n 'index': this.getIndexByValue(selectedItem.getAttribute('data-value'))\n });\n this.activeIndex = this.index;\n } else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {\n var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = {\n cancel: false\n };\n this.trigger('beforeOpen', args, function (args) {\n var initialPopupHeight;\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup',\n className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ? formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n _this.isUpdateHeaderHeight = _this.header.offsetHeight !== 0;\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n _this.isUpdateFooterHeight = _this.footer.offsetHeight !== 0;\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n initialPopupHeight = popupEle.clientHeight;\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) + parseInt(window.getComputedStyle(listitems[0]).marginBottom, 10) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < _this.itemCount * 2 && (!(_this.dataSource instanceof DataManager) || _this.dataSource instanceof DataManager && _this.totalItemCount <= _this.itemCount) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = _this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = _this.getTransformValues();\n _this.list.appendChild(virtualContentElement).appendChild(_this.list.querySelector('.e-list-parent'));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = _this.createElement('div', {\n id: _this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = _this.GetVirtualTrackHeight();\n popupEle.querySelector('.e-dropdownbase').appendChild(virtualElement);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = searchBox.container.parentElement.getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - _this.searchBoxHeight).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n } else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && !isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0) {\n _this.setScrollPosition();\n } else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n } else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && _this.isDeviceFullScreen && !_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' || _this.isDropDownClick && _this.getModuleName() === 'combobox')) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) - parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) + parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if (parseInt(_this.popupWidth.toString(), 10) > window.outerWidth && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || _this.getModuleName() === 'combobox' && !_this.allowFiltering && _this.isDropDownClick) {\n _this.popupObj.collision = {\n X: 'fit',\n Y: 'fit'\n };\n }\n if (_this.isFilterLayout() && _this.isDeviceFullScreen) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = {\n X: 0,\n Y: 0\n };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, {\n style: 'left:0px;right:0px;top:0px;bottom:0px;'\n });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n } else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), {\n 'aria-expanded': 'true',\n 'aria-owns': _this.element.id + '_popup',\n 'aria-controls': _this.element.id\n });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), {\n 'aria-activedescendant': 'no-record'\n });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = {\n name: 'FadeIn',\n duration: 100\n };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = {\n popup: popupInstance,\n event: e,\n cancel: false,\n animation: animModel\n };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (_this.isReact && _this.isFiltering() && _this.dataSource instanceof DataManager && _this.list.querySelector('ul') && !_this.isSecondClick) {\n _this.executeCloneElements();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), _this.zIndex === 1000 ? _this.element : null);\n }\n if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto' && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n } else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n if (_this.allowResize && (_this.getModuleName() !== 'dropdownlist' || !(Browser.isDevice && _this.isDeviceFullScreen && _this.allowFiltering))) {\n var resizePaddingBottom = 16;\n // Create the resizer div\n _this.resizer = _this.createElement('div', {\n id: _this.element.id + '_resize-popup',\n className: dropDownListClasses.resizeIcon // Adding class for styling\n });\n // Add the resizer div to the popup\n if (_this.list && _this.list.parentElement) {\n _this.list.parentElement.classList.add('e-resize');\n if (_this.popupHeight.toString().toLowerCase() !== 'auto' && initialPopupHeight >= parseInt(_this.popupHeight.toString(), 10) - 2) {\n _this.list.parentElement.style.height = '100%';\n }\n _this.list.parentElement.style.paddingBottom = _this.getModuleName() === 'dropdownlist' && _this.allowFiltering && _this.searchBoxHeight ? (_this.searchBoxHeight + resizePaddingBottom).toString() + 'px' : resizePaddingBottom.toString() + 'px';\n if (_this.header || _this.footer || _this.itemTemplate) {\n _this.list.parentElement.style.paddingBottom = (parseInt(_this.list.parentElement.style.maxHeight, 10) - parseInt(_this.list.style.maxHeight, 10) + resizePaddingBottom).toString() + 'px';\n }\n _this.list.parentElement.appendChild(_this.resizer);\n //hold the popup resize\n _this.list.parentElement.style.width = _this.resizeWidth + \"px\";\n _this.list.parentElement.style.height = _this.resizeHeight + \"px\";\n _this.list.parentElement.style.maxHeight = _this.resizeHeight + \"px\";\n _this.list.style.maxHeight = _this.resizeHeight + \"px\";\n }\n // Attach mouse and touch events to the resizer\n EventHandler.add(_this.resizer, 'mousedown', _this.startResizing, _this);\n EventHandler.add(_this.resizer, 'touchstart', _this.startResizing, _this);\n }\n } else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick)) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? {\n X: 'fit',\n Y: 'flip'\n } : {\n X: 'flip',\n Y: 'flip'\n },\n offsetY: offsetValue,\n enableRtl: this.enableRtl,\n offsetX: left,\n position: this.enableRtl ? {\n X: 'right',\n Y: 'bottom'\n } : {\n X: 'left',\n Y: 'bottom'\n },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list.length > 0) {\n _this.isActive = true;\n if (_this.isReactTemplateUpdate && _this.isReact && _this.itemTemplate && !_this.enableVirtualization) {\n _this.actionCompleteData.ulElement = _this.renderItems(_this.actionCompleteData.list, _this.fields);\n _this.isReactTemplateUpdate = false;\n }\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n } else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n } else if (_this.enableVirtualization) {\n _this.focusIndexItem();\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement && _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), {\n 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id\n });\n } else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), {\n 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id\n });\n }\n if (_this.isFiltering() && _this.itemTemplate && _this.element.tagName === _this.getNgDirective() && actionList && ulElement && actionList.textContent !== ulElement.textContent && _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && (this.getModuleName() === 'dropdownlist' && !this.isFilterLayout() || this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick)) {\n if (this.element && !this.isElementInViewport(this.element)) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth;\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = window.innerHeight - searchBoxHeight + 'px';\n this.list.style.height = window.innerHeight - searchBoxHeight + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight + parseInt(window.getComputedStyle(firstItem).marginBottom, 10);\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n } else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n } else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - (liHeight - inputHeight) / 2;\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && width.indexOf('px') > -1 && !this.allowFiltering && (this.getModuleName() === 'dropdownlist' || this.isDropDownClick && this.getModuleName() === 'combobox')) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) - parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) + parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2 + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) {\n isInitialSelection = false;\n }\n if (keyAction === void 0) {\n keyAction = null;\n }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI && !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ? parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight + selectedListMargin) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin) + (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin) + (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ? boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n } else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction === 'pageDown' ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction !== 'end' && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n } else {\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageDown' ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n } else if (this.enableVirtualization && keyAction === 'end') {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n } else {\n if (keyAction === 'pageDown' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n } else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight + this.listItemHeight * 2 : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && keyAction === 'down') {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) {\n keyAction = null;\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI && !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ? parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight + selectedListMargin) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ? nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = selectedLiOffsetTop - virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin) + (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n } else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction === 'pageUp' ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageUp' ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction !== 'home' && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n } else if (this.enableVirtualization && keyAction === 'home') {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n } else {\n if (keyAction === 'pageUp' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n } else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action === 'up' || e.action === 'pageUp' || e.action === 'open';\n this.scrollTop(e.action);\n break;\n }\n } else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n } else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = width.match(/px|%|em/) ? width : formatUnit(width);\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout() && this.isDeviceFullScreen) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), {\n 'aria-expanded': 'false'\n });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if (this.value == null || this.isTyped) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString !== '' || this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString !== '') {\n this.checkAndResetCache();\n }\n } else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount === 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = {\n popup: popupInstance,\n cancel: false,\n animation: animModel,\n event: e || null\n };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (_this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: _this.filterInput,\n floatLabelType: _this.floatLabelType,\n properties: {\n placeholder: _this.filterBarPlaceholder\n },\n buttons: _this.clearIconElement\n }, _this.clearIconElement);\n }\n _this.filterInputObj = null;\n if (!isNullOrUndefined(_this.popupObj) && !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n } else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n if (isNullOrUndefined(currentData)) {\n return;\n }\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = '';\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n } else {\n this.resetList(this.dataSource);\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n } else if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > this.itemCount * 2) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n if (this.resizer) {\n EventHandler.remove(this.resizer, 'mousedown', this.startResizing);\n EventHandler.remove(this.resizer, 'touchstart', this.startResizing);\n }\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n } else {\n this.inputElement = this.createElement('input', {\n attrs: {\n role: 'combobox',\n type: 'text'\n }\n });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.cssClass.replace(/\\s+/g, ' ').trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n } else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': dropDownListClasses.hiddenElement\n }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n } else if (this.getModuleName() === 'dropdownlist') {\n if (!this.targetElement().hasAttribute('aria-label')) {\n attributes(this.targetElement(), {\n 'aria-label': this.getModuleName()\n });\n }\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n } else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, {\n 'aria-labelledby': floatLabelElement.id\n });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = parseInt(listParentHeight, 10).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height) + parseInt(window.getComputedStyle(item).marginBottom, 10);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n } else {\n this.footer.innerHTML = '';\n }\n } else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n } else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n } else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n } else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', this.enabled ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) && (this.allowFiltering && !(Browser.isDevice && this.isFilterLayout()) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering && !(this.isListSearched && newProp.dataSource instanceof DataManager)) {\n if (this.list && !this.isReact) {\n this.list.innerHTML = '';\n } else {\n this.list = null;\n }\n this.actionCompleteData = {\n ulElement: null,\n list: null,\n isUpdated: false\n };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = {\n ulElement: null,\n list: null,\n isUpdated: false\n };\n this.actionData = this.actionCompleteData;\n } else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ? {\n ulElement: null,\n list: null,\n isUpdated: false\n } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || !isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource) || !(props.dataSource instanceof DataManager) && props.dataSource.length === 0)) {\n this.clearAll(null, props);\n }\n if (this.fields.groupBy && props.fields && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource) || !(props.dataSource instanceof DataManager) && props.dataSource.length === 0)) || props.dataSource instanceof DataManager || !isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n var index = isNullOrUndefined(value) ? null : this.index;\n if (isNullOrUndefined(index) && currentValue === value || this.isAngular) {\n this.setProperties({\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'value': value\n });\n } else {\n this.setProperties({\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'index': index,\n 'value': value\n });\n }\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (this_1.fields.disabled) {\n newProp.text = newProp.text && !this_1.isDisabledItemByIndex(this_1.getIndexByValue(this_1.getValueByText(newProp.text))) ? newProp.text : null;\n }\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 && this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n } else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text))).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n } else {\n _this.setOldText(oldProp.text);\n }\n });\n } else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n } else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (this_1.fields.disabled) {\n newProp.value = newProp.value != null && !this_1.isDisableItemValue(newProp.value) ? newProp.value : null;\n }\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return {\n value: void 0\n };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', {\n newProp: newProp\n }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(this_1.fields.value ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 && this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n } else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_3 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_3))).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n } else {\n _this.setOldValue(oldProp.value);\n }\n });\n } else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n } else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (this_1.fields.disabled) {\n newProp.index = newProp.index != null && !this_1.isDisabledItemByIndex(newProp.index) ? newProp.index : null;\n }\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 && this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n } else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData,\n isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n } else if (prop === 'value') {\n var fields = _this.fields.value ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n } else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n } else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {};\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = oldClass.replace(/\\s+/g, ' ').trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = newClass.replace(/\\s+/g, ' ').trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && this.actionData.list !== this.actionCompleteData.list && this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n } else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) || this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n };\n DropDownList.prototype.executeCloneElements = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var duration = this.element.tagName === this.getNgDirective() && this.itemTemplate ? 500 : 100;\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n setTimeout(function () {\n proxy.cloneElements();\n proxy.isSecondClick = proxy.isReact && proxy.isFiltering() && proxy.dataSource instanceof DataManager && !proxy.list.querySelector('ul') ? false : true;\n }, duration);\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n } else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value === '' && !this.isInteracted && (this.isSelectCustom || isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof item === 'string') {\n itemIndex = this.getIndexByValue(item);\n } else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n } else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n } else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled]) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n if (li.classList.contains(dropDownListClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(dropDownListClasses.selected)) {\n this.clear();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby', 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container && this.inputWrapper.container.parentElement) {\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n } else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n }\n delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0]\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([Property(null)], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([Property('100%')], DropDownList.prototype, \"width\", void 0);\n __decorate([Property(true)], DropDownList.prototype, \"enabled\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([Property('300px')], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([Property('100%')], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([Property({})], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"query\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([Property(true)], DropDownList.prototype, \"isDeviceFullScreen\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"readonly\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"allowResize\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"text\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"value\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([Property(null)], DropDownList.prototype, \"index\", void 0);\n __decorate([Property('Never')], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([Property(false)], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([Event()], DropDownList.prototype, \"filtering\", void 0);\n __decorate([Event()], DropDownList.prototype, \"change\", void 0);\n __decorate([Event()], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], DropDownList.prototype, \"open\", void 0);\n __decorate([Event()], DropDownList.prototype, \"close\", void 0);\n __decorate([Event()], DropDownList.prototype, \"blur\", void 0);\n __decorate([Event()], DropDownList.prototype, \"focus\", void 0);\n __decorate([Event()], DropDownList.prototype, \"resizeStop\", void 0);\n __decorate([Event()], DropDownList.prototype, \"resizing\", void 0);\n __decorate([Event()], DropDownList.prototype, \"resizeStart\", void 0);\n DropDownList = __decorate([NotifyPropertyChanges], DropDownList);\n return DropDownList;\n}(DropDownBase);\nexport { DropDownList };"],"sourceRoot":""}