{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js"],"names":["__extends","extendStatics","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","FieldSettings","_super","apply","dropDownBaseClasses","root","rtl","content","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","ITEMTEMPLATE_PROPERTY","DISPLAYTEMPLATE_PROPERTY","SPINNERTEMPLATE_PROPERTY","VALUETEMPLATE_PROPERTY","GROUPTEMPLATE_PROPERTY","HEADERTEMPLATE_PROPERTY","FOOTERTEMPLATE_PROPERTY","NORECORDSTEMPLATE_PROPERTY","ACTIONFAILURETEMPLATE_PROPERTY","HIDE_GROUPLIST","DropDownBase","options","element","_this","call","preventChange","isAngular","isPreventChange","isDynamicDataChange","addedNewItem","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","data","getValueByText","text","ignoreCase","ignoreAccent","value","listData","checkValueCase","isTextByValue","dataSource","fields","type","typeOfData","typeof","_i","dataSource_1","item","checkingAccent","String","checkIgnoreCase","getItemValue","checkNonIgnoreCase","filter","itemValue","toString","compareValue_1","dataItem","ignoreDiacritics","textItem","toLowerCase","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","document","exception","l10nUpdate","actionFailure","ele","getModuleName","ulElement","list","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","innerHTML","tempaltecheck","trim","templateName","noDataCompTemp","isStringTemplate","nodeName","liElem","createElement","textContent","classList","add","setAttribute","appendChild","renderReactTemplates","l10nLocale","componentLocale","getLocaleName","locale","getConstant","l10n","getTextByValue","properties","allowCustomValue","parseFloat","setEnableRtl","enableRtlElements","push","enableRtl","initialize","e","bindEvent","id","tagName","jsonElement","createJsonFromElement","setProperties","resetList","setListData","query","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","attributes","indexOf","name","getAttribute","htmlAttributes","querySelectorAll","option","getJSONfromOption","optionGroup","label","isHeader","child","updateFields","groupBy","iconCss","field","items","options_1","json","innerText","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","event","isActive","eventArgs","cancel","trigger","showSpinner","emptyDataRequest","executeQuery","getQuery","then","listItems","result","renderItems","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","catch","onActionFailure","hideSpinner","dataManager","executeLocal","localDataArgs","setTimeout","itemTemplate","childElementCount","children","updateDataList","childNode","remainingItems","sortedData","liCollections","updateListValues","raiseDataBound","findListElement","findNode","attribute","liElement","listArr","slice","index","dataBoundEventArgs","spliceData","skip","listElements","templateListItem","childNodes","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","contains","querySelector","postRender","listElement","focusItem","selectedItem","remove","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","isGroupChecking","notify","module","createListItems","sortOrder","getSortedDataSource","groupDataSource","take","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","className","style","display","setFixedHeader","zIndex","scrollStop","liHeight","parseInt","getComputedStyle","getValidLi","getPropertyValue","topIndex","Math","round","scrollTop","currentLi","top","templateID","itemcheck","renderContentTemplate","listDataType","isNullData","parentElement","borderWidth","defaultView","isNaN","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","liWidth","offsetWidth","width","firstLi","textField","getDataSource","addSorting","getIndexByValue","getItems","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","setUpdateInitial","updateData","j","keys","onPropertyChanged","_a","setZIndex","isEmptyData","attrs","rippleModel","duration","selector","rippleFun","wrapperElement","insertBefore","addItem","itemIndex","newList","itemsCount","selectedItemValue","itemText","itemCheck","addItemTemplate","createTextNode","updateActionCompleteData","updateAddItemList","listGroupItem","parentNode","tempLi","splice","validationAttribute","hidden","removeAttribute","itemCount","getDataByValue","_b","_c","destroy","body","queryString","prevString","matches","activeClass","prevElementId","incrementalSearch","keyCode","selectedIndex","elementId","fromCharCode","strLength","substr","Search","inputVal","searchType","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","_loop_1","itemsData","filterValue","checkField_1","fieldValue_1","split","forEach","replace","RegExp","test","state_1","resetIncrementalSearchValues","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","valueTempElement","opacity","initializeData","activeIndex","isPopupOpen","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initRemoteRender","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","popupObj","unWireListEvents","wireListEvents","floatLabelChange","floatLabelType","floatElement","inputWrapper","inputElement","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","onChangeEvent","allowFiltering","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","defaultAttr","validateAttr","setPlaceholder","readonly","dataBind","getAriaAttributes","setEnabled","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","activeElement","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","args","resetValueHandler","formElement","val","wireEvent","dropDownClick","focusIn","onSearch","bindCommonEvent","isDevice","keyboardModule","keyAction","mobileKeyActionHandler","bind","keyConfigs","eventName","keyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","delay","closePopup","setHover","hoveredItem","hasAttribute","setScrollPosition","spinnerElement","filterInputObj","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","focusEle","isSelectFocusItem","startIndex","nextItem","findLi","getBoundingClientRect","height","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","isIE","info","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","isFilterElement","clearElement","removeProperty","previousSelectedLI","getElementsByClassName","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","eve","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","clone","filterType","dataType","where","start","abs","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","createInput","placeholder","filterBarPlaceholder","cssClass","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","checkVal","some","x","setInputValue","updateActionCompleteDataValues","addNewItem","fieldValue","checkField","newElement","value_1","isExist","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","searchBox","listHeight","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","searchBoxHeight","maxHeight","offsetValue","left","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","getFocusElement","createPopup","checkCollision","collision","X","Y","position","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements","getScrollableParent","scrollParentElements_1","scrollHandler","selectedElementID","inputParent","animModel","popupInstance","popup","animation","destroyPopup","show","marginTop","resolveCollision","popupStyles","borderTop","borderBottom","setPopupPosition","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","window","innerHeight","border","popupOffset","lastItem","offsetHeight","offsetTop","lastItemOffsetValue","count","paddingBottom","inputHeight","popupWidth","inputWidth","scrollBottom","isInitial","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","setEleWidth","match","scrollableParentElements","scrollableParentElements_1","fixedHeader","removeChild","role","updatedCssClassValues","setReadOnly","calculateWidth","selectElement","onselect","stopImmediatePropagation","onchange","floatLabelElement","renderComplete","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","refreshPosition","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","removeFloating","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","blur","attrArray","clear"],"mappings":"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","file":"js/chunk-vendors~706f8ebe.22b9fac1.4.2.0.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\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, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataCompTemp[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataCompTemp[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataCompTemp[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n else {\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\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 DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\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 DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\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 DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\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, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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/// \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 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 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};\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 * \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.isAngular = 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.initRemoteRender = 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 = { isUpdated: false };\n this.actionData = { isUpdated: false };\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 };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\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 }\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 };\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.ulElement.querySelector('.' + dropDownListClasses.li);\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) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(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.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(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 }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n 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 }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n '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 }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\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 Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\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 }\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 }\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.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\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) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n 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)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !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 };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\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 = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\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 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), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\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 }\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) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\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.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\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] ||\n !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 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'\n || 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 this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || 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.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\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) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\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 = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\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 }\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) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\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 }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\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 }\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))) &&\n !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 this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n 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 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 }\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 }, duration);\n }\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 = this.getFormattedValue(li.getAttribute('data-value'));\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 }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\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.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 this.activeIndex = this.getIndexByValue(value);\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 if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\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 }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\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.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\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\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\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) &&\n (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(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\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(), { '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(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\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', { className: dropDownListClasses.value });\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 (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\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 for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\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) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n this.dispatchEvent(this.hiddenElement, 'change');\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n 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 }\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.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' ||\n typeof this.previousItemData === 'boolean' ||\n 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 }\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 }\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 if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\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 switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\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(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //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 }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\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 this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //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 }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\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 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.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\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 === '') ?\n false : true;\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 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 }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\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 }\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 }\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 }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\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 _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 // 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.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\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 this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = 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 fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\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\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\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 = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\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_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\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 }\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.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && 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.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\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 = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 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.listHeight = (parseInt(_this.listHeight, 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.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_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) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\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 attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\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 (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\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(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\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[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\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 &&\n _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(), { '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(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _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' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\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 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) &&\n 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 }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\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 && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (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) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\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) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\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 if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\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 }\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 this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\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()) {\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 this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\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 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 = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !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 }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\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 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 }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\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 }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\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 Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\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 this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.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, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact) {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\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 (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\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 }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\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) &&\n ((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 &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\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 = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(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)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\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 this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\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 (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': 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 (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\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)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\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 this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\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 (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.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && 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 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\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, 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 Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\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 _loop_1(prop);\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 }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\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.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\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 if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n 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 }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\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]) ||\n 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 element = this.findListElement(this.ulElement, 'li', 'data-value', this.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 }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n 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 Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 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 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',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n '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.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = 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.initRemoteRender = 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([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n"],"sourceRoot":""}