{"version":3,"file":"ej2-dropdowns.min.js","sources":["../../src/common/incremental-search.js","../../src/common/highlight-search.js","../../src/multi-select/float-label.js","../../src/common/virtual-scroll.js","../../src/drop-down-base/drop-down-base.js","../../src/drop-down-list/drop-down-list.js","../../src/drop-down-tree/drop-down-tree.js","../../src/combo-box/combo-box.js","../../src/auto-complete/auto-complete.js","../../src/multi-select/multi-select.js","../../src/multi-select/checkbox-selection.js","../../src/list-box/list-box.js","../../src/mention/mention.js","../../src/global.js"],"sourcesContent":["/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\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, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\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 if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\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.toString().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","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n floatLabelElement.setAttribute('for', element.id);\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EventHandler, Browser, select, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var cHeight = _this.parent.popupContentElement.clientHeight;\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n }, axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function (e) {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n }\n else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = (totalData == this.parent.totalItemCount && this.parent.queryString != this.parent.typedString) ? true : this.parent.isCustomFilter;\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\n this.parent.isCustomFilter = tempCustomFilter;\n };\n VirtualScroll.prototype.removeSkipAndTakeEvents = function (query) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder) {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n isListUpdated = false;\n }\n else {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n isListUpdated = false;\n }\n else if (this.parent.viewPortInfo.startIndex != 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex != 0 && this.parent.viewPortInfo.startIndex - this.parent.value.length != this.parent.itemCount && (this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length)) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n }\n else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0 ? this.parent.viewPortInfo.startIndex - this.parent.value.length : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value && value != null && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex == this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.parent.value === null || (this.parent.value && this.parent.value.length === 0))) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length != this.parent.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.hideSelectedItem) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex == this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n }\n else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex == 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex == this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n var ulElement = this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n }\n this.parent.getSkeletonCount();\n this.parent.skeletonCount = this.parent.totalItemCount != 0 && this.parent.totalItemCount < (this.parent.itemCount * 2) ? 0 : this.parent.skeletonCount;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.parent.GetVirtualTrackHeight();\n }\n else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {\n var virualElement = this.parent.createElement('div', {\n id: this.parent.element.id + '_popup', className: 'e-virtual-ddl', styles: this.parent.GetVirtualTrackHeight()\n });\n this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.parent.UpdateSkeleton();\n this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.parent.getTransformValues();\n }\n if (this.parent.fields.groupBy) {\n this.parent.scrollStop();\n }\n if (this.parent.keyCode == 40 && this.parent.isScrollChanged && this.parent.hideSelectedItem && !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised && !((this.parent.totalItemCount == queryStartIndex) && (this.parent.totalItemCount == queryEndIndex))) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' && this.parent.hideSelectedItem && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' && this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) || (this.parent.dataSource instanceof DataManager && !this.parent.isRequesting)) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString != this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount != 0 && this.parent.totalItemCount < (this.parent.itemCount * 2) ? 0 : this.parent.skeletonCount;\n }\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null && (!(this.parent.dataSource instanceof DataManager) || (this.parent.dataSource instanceof DataManager && !this.parent.isRequesting))) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n var virtualListCount = this.parent.list.querySelectorAll('.e-virtual-list').length;\n var listElement = this.parent.list.querySelector('.' + 'e-list-item');\n var translateY = scrollArgs.offset.top - (listElement.offsetHeight * virtualListCount);\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style.transform = \"translate(0px,\" + translateY + \"px)\";\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement.getBoundingClientRect().height;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.virtualItemCount / 2 + pageSizeBy4)))\n && infoType.endIndex !== totalItemCount)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.virtualItemCount)\n : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount ? (infoType.endIndex - this.parent.virtualItemCount > 0 ? infoType.endIndex - this.parent.virtualItemCount : 0) : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n }\n else if (infoType.direction === 'up') {\n if (infoType.startIndex && infoType.endIndex) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex) {\n var idxAddedToExactTop = (pageSizeBy4) > infoViewIndices ? pageSizeBy4 :\n (infoViewIndices + infoViewIndices / 4);\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = (eIndex < totalItemCount || this.component == \"multiselect\") ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n }\n else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n var infoview = _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex != pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = \"translate(0px,\" + top + \"px)\";\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\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};\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';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\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 __decorate([\n Property()\n ], FieldSettings.prototype, \"disabled\", 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 virtualList: 'e-list-item e-virtual-list',\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.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\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 (typeof baseTemplate !== 'function' && 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 ((!isNullOrUndefined(this.noRecordsTemplate) && 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 (typeof template !== 'function' && 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 noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text) {\n ele.appendChild(noDataElement[i]);\n }\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') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\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.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = ((this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0) || this.skeletonCount === 0) ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\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.preventPopupOpen = 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, this.fields.disabled);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss, disabled) {\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 disabled: !isNullOrUndefined(disabled) ? disabled : this.fields && this.fields.disabled\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 if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\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 var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count != 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) || (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\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 if (_this.getInitialData) {\n _this.setListData(dataSource, fields, query, event);\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) && !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\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 (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\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 if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\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 };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\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.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\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.isRequesting = 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 if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\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 if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\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 };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n if (this.fields.disabled) {\n var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);\n for (var index = 0; index < liCollections.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.disabled]) {\n this.disableListItem(liCollections[index]);\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : 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 DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\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 (typeof this.groupTemplate !== 'function' && 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) {\n if (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 return null;\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, isDownkey) {\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 var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\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, isCheckBoxUpdate) {\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 if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\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 (typeof this.itemTemplate !== 'function' && 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 = [];\n if (this.fields.disabled && this.getModuleName() === 'multiselect' && this.liCollections) {\n listItems = this.liCollections;\n }\n else {\n listItems = this.getItems();\n }\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 * 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.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\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 }\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 if (element) {\n element.dispatchEvent(evt);\n }\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 || this.isVirtualizationEnabled) && 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, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\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, oldProp);\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 if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\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 EventHandler.add(document, 'scroll', this.updateGroupFixedHeader, 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 DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\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 * @deprecated\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 isListboxEmpty = itemsCount === 0;\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 = typeof this.itemTemplate !== 'function' &&\n 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 if (this.getModuleName() === 'listbox') {\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n this.listData.splice(isListboxEmpty ? this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index);\n isListboxEmpty = true;\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\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 this.isAddNewItemTemplate = true;\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] && this.liCollections[index].parentNode) {\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 (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n /**\n * Checks if the given HTML element is disabled.\n *\n * @param {HTMLElement} li - The HTML element to check.\n * @returns {boolean} - Returns true if the element is disabled, otherwise false.\n */\n DropDownBase.prototype.isDisabledElement = function (li) {\n if (li && li.classList.contains('e-disabled')) {\n return true;\n }\n return false;\n };\n /**\n * Checks whether the list item at the specified index is disabled.\n *\n * @param {number} index - The index of the list item to check.\n * @returns {boolean} True if the list item is disabled, false otherwise.\n */\n DropDownBase.prototype.isDisabledItemByIndex = function (index) {\n if (this.fields.disabled && this.liCollections) {\n return this.isDisabledElement(this.liCollections[index]);\n }\n return false;\n };\n /**\n * Disables the given list item.\n *\n * @param { HTMLLIElement } li - The list item to disable.\n * @returns {void}\n */\n DropDownBase.prototype.disableListItem = function (li) {\n li.classList.add('e-disabled');\n li.setAttribute('aria-disabled', 'true');\n li.setAttribute('aria-selected', 'false');\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) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\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 }\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, disabled: 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","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[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isTouched = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { 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 this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.fields.disabled ? this.ulElement.querySelector('.' + dropDownListClasses.li + ':not(.e-disabled)') : this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\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.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\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') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\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.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n /**\n * Checks if the given value is disabled.\n *\n * @param { string | number | boolean | object } value - The value to check for disablement. Can be a string, number, boolean, or object.\n * @returns { boolean } A boolean indicating whether the value is disabled.\n */\n DropDownList.prototype.isDisableItemValue = function (value) {\n if (typeof (value) === 'object') {\n var objectValue = JSON.parse(JSON.stringify(value))[this.fields.value];\n return this.isDisabledItemByIndex(this.getIndexByValue(objectValue));\n }\n return this.isDisabledItemByIndex(this.getIndexByValue(value));\n };\n DropDownList.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\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(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { 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 EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), 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.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\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 this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = void 0;\n if (this.fields.disabled) {\n var enableLiCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.e-disabled)');\n li = incrementalSearch(e.charCode, enableLiCollections, this.activeIndex, true, this.element.id);\n }\n else {\n li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n }\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\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 this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\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 if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\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.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] && this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 && this.fields.groupBy ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownListClasses.focus)\n || this.liCollections[index].classList.contains(dropDownListClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n if (this.getModuleName() !== 'autocomplete') {\n if (this.liCollections.length - 1 === itemIndex && e.action === 'down') {\n e.action = 'up';\n }\n if (itemIndex === 0 && e.action === 'up') {\n e.action = 'down';\n }\n }\n this.updateUpDownAction(e);\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n 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.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 : this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() : this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ? (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\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 if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\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 this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\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 = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\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.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n 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 if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\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 if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\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 (typeof dropdownTemplate !== 'function' && 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 (typeof this.valueTemplate !== 'function' && 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 append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\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, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\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.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\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 var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', 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 this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\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 if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\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 if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ? this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex != 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < filterQuery.queries.length; queryElements_1++) {\n if (filterQuery.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_1].e.nos;\n }\n if (filterQuery.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements_1].e.nos ? filterQuery.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < this.query.queries.length; queryElements_2++) {\n if (this.query.queries[queryElements_2].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_2].e.nos ? this.query.queries[queryElements_2].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_3 = 0; queryElements_3 < filterQuery.queries.length; queryElements_3++) {\n if (filterQuery.queries[queryElements_3].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n continue;\n }\n if (filterQuery.queries[queryElements_3].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements_3].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { 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 this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query.clone();\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = ((!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') || this.getInitialData) ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\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 if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n if (!this.preventPopupOpen && this.getModuleName() === 'combobox') {\n this.beforePopupOpen = true;\n this.preventPopupOpen = true;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { 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_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\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 && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ? this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ '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.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { 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 popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ? formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\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.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\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 if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { 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,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { 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 if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\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 if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\n };\n ;\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\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 && !this.enableVirtualization) {\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 && (width.indexOf('px') > -1) && (!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, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + 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 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\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 this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n if (this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: this.filterInput,\n floatLabelType: this.floatLabelType,\n properties: { placeholder: this.filterBarPlaceholder },\n buttons: this.clearIconElement,\n }, this.clearIconElement);\n }\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 if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { '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 if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { 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 if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\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', 'aria-label': this.getModuleName(), '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 if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\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 (typeof this.footerTemplate !== 'function' && 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 (typeof this.headerTemplate !== 'function' && 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, oldProps) {\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 instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n this.setProperties({ 'text': dataItem.text, 'value': 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (this_1.fields.disabled) {\n newProp.text = newProp.text && !this_1.isDisabledItemByIndex(this_1.getIndexByValue(this_1.getValueByText(newProp.text)))\n ? newProp.text : null;\n }\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\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 (this_1.fields.disabled) {\n newProp.value = newProp.value != null && !this_1.isDisableItemValue(newProp.value) ? newProp.value : null;\n }\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\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 var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\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 (this_1.fields.disabled) {\n newProp.index = newProp.index != null && !this_1.isDisabledItemByIndex(newProp.index) ? newProp.index : null;\n }\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\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 if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\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 this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\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 if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\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 value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.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 if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n if (li.classList.contains(dropDownListClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(dropDownListClasses.selected)) {\n this.clear();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\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 delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0],\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\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(false)\n ], DropDownList.prototype, \"enableVirtualization\", 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(false)\n ], DropDownList.prototype, \"allowObjectBinding\", 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","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 @typescript-eslint/no-explicit-any */\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * \n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n }\n else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n }\n else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNOU(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node, isChild, isChildFiltering)) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n }\n else {\n filteredItems.child = null;\n filteredItems = (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n var filteredChild = this.nestedChildFilter(value, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.nestedChildFilter(value, children[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n var matchedData = [];\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n var parentId = matchedData[parseInt(i.toString(), 10)][this.fields.parentValue];\n while (!isNOU(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n var value_1 = this.treeData[parseInt(j.toString(), 10)][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n this.keyboardModule.destroy();\n if (this.showSelectAll && this.checkAllParent) {\n EventHandler.remove(this.checkAllParent, 'mouseup', this.clickHandler);\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n break;\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n var selectedData = this.getSelectedData(this.value[parseInt(index.toString(), 10)]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '', 'aria-label': this.getModuleName() }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT, 'aria-label': this.getModuleName() }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.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 this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\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.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\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.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 DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n var text = getValue(this.fields.text, this.treeItems[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n var dataId = getValue(this.fields.text, data[parseInt(i.toString(), 10)]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n var childData = getValue(field.child, data[parseInt(i.toString(), 10)]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n newData = this.getNestedItems(getValue(child, data[parseInt(i.toString(), 10)]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = void 0;\n if (_this.value != null && _this.text != null) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement = _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[0] + '\"]');\n focusedElement.setAttribute('tabindex', '0');\n }\n else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li:not(.e-disable):not(.e-prevent)');\n if (oldFocussedNode && oldFocussedNode !== focusedElement) {\n oldFocussedNode.setAttribute('tabindex', '-1');\n removeClass([oldFocussedNode], 'e-node-focus');\n }\n }\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n if (_this.treeObj.checkedNodes.length > 0) {\n var nodes = _this.treeObj.element.querySelectorAll('li');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if ((checkedNodes.length === nodes.length || _this.checkSelectAll) && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.reactCallBack = function () {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNOU(this.inputWrapper) &&\n this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n if (!this.isFilteredData) {\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n }\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource)) {\n this.fields.dataSource = [];\n }\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) ||\n !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 || (!isNOU(args.data[0]) && args.data[0].isChecked === 'false'))) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && (args.isInteracted || this.isCheckAllCalled || (!isNOU(args.data[0]) && args.data[0].isChecked === 'true'))) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function () {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length === 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox && !this.ddtCompareValues(this.treeObj.selectedNodes, this.value.slice())) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\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], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (Array.isArray(this.value) && this.value.length === 0 && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n this.portals = [];\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n Input.setRipple(false, [this.inputObj]);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n detach(this.inputObj.container);\n if (this.inputObj.buttons.length) {\n detach(this.inputObj.buttons[0]);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n if (this.chipCollection) {\n var chipsIcons = selectAll('.e-chips-close', this.chipCollection);\n for (var _i = 0, chipsIcons_1 = chipsIcons; _i < chipsIcons_1.length; _i++) {\n var element = chipsIcons_1[_i];\n EventHandler.remove(element, 'mousedown', this.removeChip);\n }\n }\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj, cancel: false };\n this.trigger('close', eventArgs);\n if (eventArgs.cancel) {\n return;\n }\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property('${value.length} item(s) selected')\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\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, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n }\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) || (this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\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 ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && 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 ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\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 /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) || (this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n var newValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) || (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) || (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) || (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) || (this.allowObjectBinding && ((previousValue == null && this.value !== null) || (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\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 ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox 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 * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\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 * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\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 * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _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 * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\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 { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue((this.fields.value) ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\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 AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\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 { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { isCollide, Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.preventSetCurrentData = false;\n _this.isSelectAllLoop = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = 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 switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED + ')');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n }\n }\n else {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(value)) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'notequal', (value));\n }\n else {\n predicate = predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization && this.listData && this.listData.length > 0) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' && this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll) && ((!this.enableVirtualization) || (this.enableVirtualization && !this.virtualSelectAll))) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect 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 MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization && this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== \"\") || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ? this.query.take(this.maximumSelectionLength).requiresCount() : new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.condition == 'or') || (filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if ((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ? Object.keys(this.firstItem) : Object.keys(dataItem_1);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ? JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ? tempCount : this.totalItemCount;\n }\n else {\n if (this.dataSource instanceof DataManager && this.allowCustomValue && this.allowFiltering) {\n this.remoteCustomValue = false;\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps] : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex == 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) || (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) || (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyCode != 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode == 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyCode != 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode == 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData && this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) : selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n var focusedLi = this.list ? this.list.querySelector('.e-item-focus') : null;\n if (this.isDisabledElement(focusedLi)) {\n if (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem):not(.e-disabled)').length === 0) {\n this.removeFocus();\n return;\n }\n var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));\n if (index === 0 && this.mode !== 'CheckBox') {\n position = 1;\n }\n if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {\n position = -1;\n }\n this.moveByList(position);\n }\n };\n MultiSelect.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 MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var element_1 = this.virtualSelectAll ? null : this.findListElement(this.list, 'li', 'data-value', currentValue);\n var val_1 = this.allowObjectBinding ? value : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n if (_this.enableVirtualization && isClearAll) {\n removeVal = [];\n }\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index == 0 && _this.text.split(_this.delimiterChar) && _this.text.split(_this.delimiterChar).length == 1 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index], '') : index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (this.enableVirtualization && isClearAll) {\n var childElements = this.chipCollectionWrapper.querySelectorAll('.e-chips');\n }\n else {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) && item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(this.getDataByValue(value), this.value)) || (!this.allowObjectBinding && this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization && !this.isSelectAllLoop) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var temp = void 0;\n var currentText = [];\n var value_1 = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value_1);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight;\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemsCount();\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] && _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight;\n if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n }\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering)) {\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 MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.customFilterQuery = query;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {\n _this.isCustomRendered = false;\n }\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if ((!(this.viewPortInfo.startIndex >= activeElement.index)) || (!(activeElement.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0 ? activeElement.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index_1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement) && !this.enableVirtualization) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (this.enableVirtualization) {\n listValue = this.findListElement((!isNullOrUndefined(this.list) ? this.list : this.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this.allowCustomValue && !this.enableVirtualization && this.listData && this.listData.length > 0) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n if (this.enableVirtualization) {\n if (delim) {\n data = this.delimiterWrapper && this.delimiterWrapper.innerHTML == \"\" ? data : this.delimiterWrapper.innerHTML;\n }\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n hiddenElementContent = this.hiddenElement.innerHTML;\n if ((e && e.currentTarget && e.currentTarget.classList.contains('e-chips-close')) || (e && (e.key === 'Backspace'))) {\n var item = e.target.parentElement.getAttribute('data-value');\n if (e.key === 'Backspace') {\n var lastChild = this.hiddenElement.lastChild;\n if (lastChild) {\n this.hiddenElement.removeChild(lastChild);\n }\n }\n else {\n this.hiddenElement.childNodes.forEach(function (option) {\n if (option.value === item) {\n option.parentNode.removeChild(option);\n }\n });\n }\n hiddenElementContent = this.hiddenElement.innerHTML;\n }\n else {\n hiddenElementContent += \"\";\n }\n break;\n }\n else {\n temp = this.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if (getValue((this.fields.value ? this.fields.value : 'value'), listItems[i]) === value) {\n text = getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) || (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) || ((this.enableVirtualization && value && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) || (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value) && (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && (this.isValidLI(element) || (this.fields.disabled && this.isDisabledElement(element)))) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value) && (this.allowCustomValue || (this.listData && this.listData.length > 0))) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.virtualSelectionAll = function (state, li, event) {\n var _this = this;\n var index = 0;\n var length = li.length;\n var count = this.maximumSelectionLength;\n if (state) {\n length = this.virtualSelectAllData && this.virtualSelectAllData.length != 0 ? this.virtualSelectAllData.length : length;\n this.listData = this.virtualSelectAllData;\n var ulElement = this.createListItems(this.virtualSelectAllData.slice(0, 30), this.fields);\n var firstItems = ulElement.querySelectorAll('li');\n var fragment_1 = document.createDocumentFragment();\n firstItems.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n li.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n var concatenatedNodeList = fragment_1.childNodes;\n if (this.virtualSelectAllData instanceof Array) {\n while (index < length && index <= 50 && index < count) {\n this.isSelectAllTarget = (length === index + 1);\n if (concatenatedNodeList[index]) {\n var value = this.allowObjectBinding ? this.getDataByValue(concatenatedNodeList[index].getAttribute('data-value')) : this.getFormattedValue(concatenatedNodeList[index].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n this.updateListSelection(concatenatedNodeList[index], event, length - index);\n }\n else {\n var value = getValue((this.fields.value) ? this.fields.value : '', this.virtualSelectAllData[index]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n if (this.value && value != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.dispatchSelect(value, event, null, false, length);\n }\n }\n index++;\n }\n if (length > 50) {\n setTimeout(function () {\n if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {\n _this.virtualSelectAllData.map(function (obj) {\n if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) && ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) || (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {\n _this.dispatchSelect(obj[_this.fields.value], event, null, false, length);\n }\n });\n }\n _this.updatedataValueItems(event);\n _this.isSelectAllLoop = false;\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {\n this.virtualSelectAllData.map(function (obj) {\n _this.virtualSelectAll = true;\n _this.removeValue(_this.value[index], event, _this.value.length - index);\n });\n }\n this.updatedataValueItems(event);\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n this.value = [];\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify(\"setCurrentViewDataAsync\", {\n component: this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if ((li && li.length) || (this.enableVirtualization && !state)) {\n var index_2 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n if (this.enableVirtualization) {\n this.virtualSelectAll = true;\n this.virtualSelectAllState = state;\n this.CurrentEvent = event;\n if (!this.virtualSelectAllData) {\n this.resetList(this.dataSource, this.fields, new Query());\n }\n if (this.virtualSelectAllData) {\n this.virtualSelectionAll(state, li, event);\n }\n }\n else {\n while (index_2 < length && index_2 <= 50 && index_2 < count_1) {\n this.isSelectAllTarget = (length === index_2 + 1);\n this.updateListSelection(li[index_2], event, length - index_2);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < length && index_2 < count_1) {\n _this.isSelectAllTarget = (length === index_2 + 1);\n _this.updateListSelection(li[index_2], event, length - index_2);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_2 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_2 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n if ((this.enableVirtualization && this.value && this.value.length > 0) || !this.enableVirtualization) {\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n if (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualSelectAllData)) {\n this.virtualSelectAll = false;\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 MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\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 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n if (this.fields.disabled) {\n this.text =\n this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount != 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ? this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ? this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect 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 MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode == 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 && _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ? _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = 0;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n if (_this.remoteDataCount >= 0) {\n _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n }\n else {\n _this.resetList(_this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) && (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.updateInitialData();\n _this.checkAndResetCache();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 && _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' || _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify(\"setCurrentViewDataAsync\", {\n component: _this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null && _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\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 MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, { 'aria-expanded': 'false', 'aria-label': this.getModuleName() });\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n /**\n * Removes disabled values from the given array.\n *\n * @param { number[] | string[] | boolean[] | object[] } value - The array to check.\n * @returns {void}\n */\n MultiSelect.prototype.removeDisabledItemsValue = function (value) {\n if (value) {\n var data = [];\n var dataIndex = 0;\n for (var index = 0; index < value.length; index++) {\n var indexValue = value[index];\n if (typeof (indexValue) === 'object') {\n indexValue = JSON.parse(JSON.stringify(indexValue))[this.fields.value];\n }\n if ((indexValue != null) && !(this.isDisabledItemByIndex(this.getIndexByValue(indexValue)))) {\n data[dataIndex++] = value[index];\n }\n }\n this.value = data.length > 0 ? data : null;\n }\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(value);\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (this.fields.disabled) {\n this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = this.getItems();\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n MultiSelect.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n if (li.classList.contains(dropDownBaseClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(HIDE_LIST) || li.classList.contains(dropDownBaseClasses.selected)) {\n var oldValue = this.value;\n this.removeDisabledItemsValue(this.value);\n this.updateVal(this.value, oldValue, 'value');\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder', 'aria-label', 'aria-expanded'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\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 { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n, setValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\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 * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n if (this.isAngular && this.allowFiltering) {\n var originalElement = this.element;\n var clonedElement = originalElement.cloneNode(true);\n originalElement.parentNode.replaceChild(clonedElement, originalElement);\n this.element = clonedElement;\n setValue('ej2_instances', [this], this.element);\n }\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n this.inputFormName = this.element.getAttribute('name');\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad && this.element.parentElement) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index === null ? this.jsonData.length : index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n this.toolbarSettings.items = isNullOrUndefined(this.toolbarSettings.items) ? [] : this.toolbarSettings.items;\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n if (this.inputFormName) {\n input.setAttribute('name', this.inputFormName);\n }\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n if (this.element.parentElement) {\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n }\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n var filterElem;\n var txtLength;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n if (scrollParent) {\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (args.items !== items) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the 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 list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove 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 remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove 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 remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n var li = closest(e.target, '.' + 'e-list-item');\n if (isNullOrUndefined(li)) {\n return;\n }\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'role': 'textbox'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\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 for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number);\n }\n var _loop_3 = function (i) {\n if (fListBox.ulElement.childNodes[i].classList.contains('e-disabled')) {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n flistboxarray = flistboxarray.filter(function (item) { return item !== i; });\n tempLiColl.push(fListBox.ulElement.childNodes[i]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n };\n for (var i = 0; i < fListBox.ulElement.childElementCount; i++) {\n _loop_3(i);\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < flistboxarray.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n }\n else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.liCollections);\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData.filter(function (data) { return (data !== undefined); });\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = tempData;\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && (!this.allowFiltering ||\n (this.allowFiltering && e.target !== this.filterInput))) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\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 ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (\n // eslint-disable-next-line max-len\n values, isSelect, isText, canFocus) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n if (canFocus === void 0) { canFocus = true; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect && !li.classList.contains('e-disabled')) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n if (isNullOrUndefined(inst.ulElement)) {\n if (!isNullOrUndefined(this.dataSource) && isNullOrUndefined(this.dataSource.length)) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n }\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n oldProp.toolbarSettings.items = isNullOrUndefined(oldProp.toolbarSettings.items) ? [] : oldProp.toolbarSettings.items;\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('None')\n ], ListBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\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 clearIcon: 'e-clear-icon'\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};\nimport { compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} 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 Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = 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 this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\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 var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownBaseClasses.focus)\n || this.liCollections[index].classList.contains(dropDownBaseClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n this.updateUpDownAction(e);\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement != this.inputElement && isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange == lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0) && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) || (this.liCollections && this.liCollections.length > 0))) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = this.fields.disabled ? ulElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled)') : ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\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 Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\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('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement) {\n var rteRootElement = _this.inputElement.parentElement.closest('.e-richtexteditor');\n if (rteRootElement && popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', rteRootElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\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 };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement(\"span\");\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.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 (!preventSelect && !isNullOrUndefined(e) && !(e.action === \"down\" || e.action === \"up\")) {\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 _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.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 Mention.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.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.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 Mention.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 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 Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && 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;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\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 if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.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 Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix;\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() && this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n range.startContainer.parentElement.normalize();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', { detail: { click: true } });\n this.inputElement.dispatchEvent(event_1);\n }\n ;\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : '');\n }\n else {\n return '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : '');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\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 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.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = 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 Mention.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 Mention.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 Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.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 Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\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 Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\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 Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import * as index from './index';\nindex.DropDownList.Inject(index.VirtualScroll);\nindex.ComboBox.Inject(index.VirtualScroll);\nindex.AutoComplete.Inject(index.VirtualScroll);\nindex.MultiSelect.Inject(index.CheckBoxSelection, index.VirtualScroll);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryStringUpdated","currentValue","isVirtual","refresh","queryString","prevString","tempQueryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","listItems","strLength","length","item","i","matches","innerText","substr","push","indexUpdated","i_1","textContent","classList","contains","activeClass","Search","inputVal","searchType","dataSource","fields","type","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","text","checkField_1","fieldValue_1","split","filter","data","Array","prototype","slice","call","forEach","value","isHeader","toString","indexOf","getAttribute","replace","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","match","charCodeAt","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","setAttribute","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__assign","Object","assign","t","s","n","arguments","p","hasOwnProperty","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","verb","v","op","f","TypeError","_","y","ops","pop","trys","g","sent","throw","return","Symbol","iterator","VirtualScroll","parent","_this","sentinelInfo","up","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","down","popupContentElement","clientHeight","bottom","removeEventListener","addEventListener","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","getBoundingClientRect","EventHandler","popupScrollHandler","touchModule","Touch","scroll","bind","virtualScrollHandler","getModuleName","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","skip","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","newQuery","removeSkipAndTakeEvents","clone","tempCustomFilter","isCustomFilter","totalData","DataManager","json","totalItemCount","typedString","resetList","queries","event","fn","currentData","isResetListCalled","isListUpdated","viewPortInfo","mode","isArray","enableSelectionOrder","startIndex","updateVirtualReOrderList","itemCount","oldUlElement","list","removeChild","getForQuery","take","appendUncheckList","setCurrentView","reOrderList","skipvalue","totalItemsCount","alreadyAddedData","hideSelectedItem","getValue","allowCustomValue","virtualCustomData","splice","virtualCustomSelectData","concat","renderItems","updatevirtualizationList","getSkeletonCount","skeletonCount","virtualTrackElement","getElementsByClassName","style","GetVirtualTrackHeight","popupWrapper","virualElement","styles","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","isScrollChanged","currentFocuedListElement","currentSelectElem","getElementByValue","addListFocus","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","isRequesting","isOpenPopup","selectedValueInfo","Query","virtualScrollRefreshAsync","_a","isTyped","filterInput","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","customFilterQuery","isVirtualTrackHeight","preventSetCurrentData","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","virtualListCount","listElement","translateY","offsetHeight","transform","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","updateSelectionList","getItems","previousInfo","isscrollAction","infoType","offsets","previousEndIndex","vHeight","height","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","Math","round","floor","eIndex","ceil","idxAddedToExactTop","scrollPreStartIndex","delay","Browser","name","prevTop","debounced100","debounce","debounced50","target","scrollTop","left","scrollLeft","current","pstartIndex","scrollOffsetargs","debounceFunction","focusElement","activeElement","destroy","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","virtualList","DropDownBase","options","preventChange","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","virtualSelectAll","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","ignoreAccent","checkValueCase","isTextByValue","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","ulElement","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","compile","templateName","noDataElement","isStringTemplate","nodeName","liElem","HTMLElement","Text","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","checkAndResetCache","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","getFilteringSkeletonCount","currentSkeletonCount","skeletonUpdated","abs","retainSkeleton","listContainerHeight","parseInt","actualCount","heightDimension","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","liElement","itemTemplate","skeleton","Skeleton","shape","width","cssClass","appendTo","firstChild","insertBefore","getTextByValue","properties","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","extend","htmlAttributes","option","getJSONfromOption","optionGroup","child","updateFields","iconCss","field","options_1","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","eventArgs","cancel","isAngular","trigger","showSpinner","isWhereExist_1","emptyDataRequest","executeQuery","getQuery","isReOrder","queryElements","count","nos","condition","operator","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","notify","module","virtualSelectAllData","virtualSelectionAll","catch","onActionFailure","hideSpinner","virtualGroupDataSource","executeLocal","records","dataManager","localDataArgs","childElementCount","updateDataList","updatePopupState","state","updateRemoteData","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","isObjectInArray","objectToFind","array","some","keys","every","findListElement","findNode","attribute","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","setStyleAttribute","zIndex","postRender","JSON","parse","stringify","disableListItem","focusItem","selectedItem","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","sortOrder","getSortedDataSource","groupDataSource","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","isDownkey","liHeight","getComputedStyle","getValidLi","getPropertyValue","topIndex","updateGroupHeader","returnExactCount","updateGroupFixedHeader","position","parentElement","offsetTop","window","scrollY","isCheckBoxUpdate","virtualUlElement","updateListElements","createVirtualContent","incrementalLiCollections","incrementalUlElement","incrementalListData","templateID","itemcheck","renderContentTemplate","borderWidth","defaultView","isNaN","liWidth","offsetWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getIndexByValueFilter","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","oldProps","setUpdateInitial","updateData","j","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","wrapperElement","removeScrollEvent","addItem","itemIndex","newList","itemsCount","isListboxEmpty","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","isDisabledElement","isDisabledItemByIndex","validationAttribute","hidden","getDataByValue","_b","_c","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","isTouched","IsScrollerAtEnd","scrollHeight","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initialRemoteRender","isNotSearchList","isSelected","preventFocus","preventAutoFill","isValidKey","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","pageUp","pageDown","open","close","hide","space","requiredModules","modules","enableVirtualization","args","member","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","onChangeEvent","updateInitialData","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","readonly","defaultAttr","validateAttr","Input","setPlaceholder","dataBind","getAriaAttributes","aria-disabled","role","aria-expanded","aria-live","setEnabled","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","listItems_1","liItem","initValue","updateValues","isDisableItemValue","objectValue","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","windowResize","bindCommonEvent","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","closePopup","currentLi","setHover","hoveredItem","hasAttribute","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","enableLiCollections","spinnerElement","filterInputObj","createSpinner","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","value_2","selectedData","value_3","focusAtFirstElement","value_4","aria-activedescendant","findLi","steps","previousItem","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","getItem","where","Predicate","previousSelectedLI","aria-describedby","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","isCustomValue","datas","foundIndex","findIndex","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","firstItem","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","queryElements_1","queryElements_2","queryElements_3","requiresCount","start","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","focusIndexItem","setSearchBox","popupElement","createInput","filterBarPlaceholder","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","outerHeight","updateActionCompleteDataValues","tempItemCount","aria-hidden","aria-label","value_5","checkVal","x","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_6","actionCompleteDataUpdate","findEle","highlightedItem","refreshPopup","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","listitems","searchBoxHeight","maxHeight","offsetValue","getOffsetValue","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","popupWidth","outerWidth","collision","X","Y","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","getScrollableParent","scrollHandler","selectedElementID","enable","scrollBottom","aria-owns","aria-controls","inputParent","animModel","popup","animation","destroyPopup","show","Animation","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","isElementInViewport","elementRect","innerHeight","right","innerWidth","border","popupOffset","lastItem","listHeight","paddingBottom","isInitial","isInitialSelection","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","fixedHeader","dataSourceCount","preselectedIndex","updatedCssClassValues","class","setReadOnly","calculateWidth","getListHeight","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","value_7","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","blur","disableItem","HTMLLIElement","parsedData","clear","attrArray","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","isCheckAllCalled","isFromFilterChange","keyEntity","isFirstRender","isInitialized","currentText","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","destroyPopupOnHide","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","clearTimeout","filterHandler","isChildObject","expandedNodes","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","remoteDataFilter","getTreeFields","nestedFilter","portals","filteredFields","map","remoteChildFilter","filteredChild","node","isChild","isChildFiltering","isMatchedNode","matchedChildren","filteredItems","matchedDataSource","nestedChildFilter","matchedData","parentId","parentValue","checkValue","tempChild","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","showSelectAll","clickHandler","isClearButtonClick","showOverAllClear","isValue","chipWrapper","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","observedArgs","isValueChange","keyEventArgs","focusedElement","resetValue","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","delimiterChar","getOverflowVal","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","textArr","join","chips","lastChild","updateRemainTemplate","updateDelimMode","getSelectedData","treeSettings","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","autoCheck","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","isCancelled","POPUP_CLASS","includes","reactCallBack","updatePopupHeight","oldFocussedNode","nodes","checkSelectAll","wrap","getHeight","inputWidth","ddElement","documentElement","isFilter","isFooter","isScroller","getTreeDataType","expandAll","restoreFilterSelection","elements","setEnableRTL","cloneChildField","hasChildren","expanded","imageUrl","selectable","tableName","tooltip","parentID","getTreeChildren","isChecked","childFields","getActualProperties","ds","len","updateTemplate","getEventArgs","nodeData","getNode","removeSelectedData","updateClearButton","nextSibling","chipClose","updateDropDownIconState","spinIcon","appendSpan","isValid","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","ddtValue","checkSelection","getNodeData","getChildNodeData","obj","newChildItems","getChildMapperFields","childNodeData","muteOnChange","textValue","hiddenInputValue","setChipValues","setTagValues","chip","data-value","chipContent","CHIP_CLOSE","removeChip","tempArr","templateComplier","setSelectAllWrapper","updateOverflowWrapper","clearCheckAll","selectAllItems","arr","updateTreeSettings","updateValue","updateCheckBoxState","checkBox","noRecord","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateText","updateModelMode","overFlow","setRipple","chipsIcons_1","ensureVisible","getData","ComboBox","preventBlur","targetFocus","inputValue","customValue","valueMuteChange","doesItemExist","currentValue_1","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","changeData","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","isHighlight","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","isSelectAllLoop","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","selectedListData","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","removeSelectedChip","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","predicate","or","and","adaptor","JsonAdaptor","proxy","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","remoteCustomValue","mainData","mainListCollection","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","virtualFilterQuery","isSkip","backCommand","dataChecks","customData","dataItem_1","random","emptyObject_1","tempCount","isRemoteSelection","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","collection","previousFocusItem","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","arrowDown","arrowUp","onKeyDown","altKey","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","limit","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","updateCheck","isVirtualElement","elementIndex","focusedLi","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","hideElement","currentValue_2","targetEle_1","isSelectAllTarget","clearAllCallback","element2","addValue","updateWrapperText","textValues","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","multiCompiler","multiselectTemplate","encodeHtmlEntities","title","setClass","classes","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","onListMouseDown","textVal","delim","valueLength","hiddenElementContent","valueItem","listValue","isChipRemove","addValidInputClass","isInitialVirtualData","removeListSelection","isCustomData","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","visibleListElements","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","firstItems","fragment_1","createDocumentFragment","concatenatedNodeList","updatedataValueItems","updateHiddenElement","beforeSelectArgs","preventSelectEvent","index_2","count_1","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","removeDisabledItemsValue","dropDownIcon","reInitializePoup","msProps","checkvalue","typedValue","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","dataIndex","indexValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","listItems_2","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","boundPreventListSelection","preventListSelection","stopPropagation","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isDataSourceUpdate","ListBox_1","originalElement","clonedElement","inputString","initLoad","isCustomFiltering","initialSelectedOptions","inputFormName","initWrapper","hiddenSelect","groupHdrs","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","dragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","jsonData","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","filterElem","txtLength","noRecElem","filterWireEvents","inputSearch","isRendered","initToolbarAndStyles","setCheckboxPosition","setFiltering","badge","getDragArgs","dragSelected","isIos","overflow","dragEventArgs","allowDragAll","scrollParent","boundRect","stopTimer","clientY","timer","setInterval","setScrollDown","scrollElem","scrollPixel","isScrollDown","clearInterval","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getArgs","sourceArgs","previousData","destArgs","dragArgs","source","previousIndex","currentIndex","sourceArgs1","destination","targetListObj","ul_1","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","idx","jsonIdx_1","sIdx_1","fLiColl_1","currIdx_1","ul_2","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","sortable","placeHolderElement","dragArgs1","liCollElem","destElem","elems","triggerBeforeItemRender","curData","enableItems","getSelectedItems","updateSelectedOptions","selElems","triggerChange","addItems","removeItems","removeItem","dupData","itemIdx","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","ulList","mainCount","ulEleCount","listindex","valueindex","form","keyDownHandler","focusOutHandler","wireToolbarEvent","formResetHandler","getToolElem","toolbarClickHandler","unwireEvents","clearFilterIconElem","selectHandler","liItems","autocorrect","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","min","prevSelIdx","max","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","toolbarAction","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","tempLiColl","flistboxarray","Number","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","canFocus","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","initRemoteRender","isListResetted","isCollided","lineBreak","isRTE","keyEventName","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isKeyAction","isUpDownKey","rangetextContent","isRteImage","range","getCurrentRange","startContainer","currentRange","getTextRange","lastWordRange","getLastLetter","lastTwoLetters","Regex","charRegex","isMatchedText","charAt","substring","lastIndexOf","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startOffset","startPos","words","popupEle_1","rteRootElement","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","cssText","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","endOffset","collapse","getClientRects","rectTop","rectLeft","iframes","iframe","contentDocument","iframeRect","doc","windowLeft","pageXOffset","clientLeft","windowTop","pageYOffset","clientTop","Node","TEXT_NODE","span_1","textNodeWidth","fontSize","offsetLeft","isSelectCancel","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","textSuffix","endPos","mentionVal","commonAncestorContainer","deleteContents","normalize","frag","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","pointerType","event_1","CustomEvent","detail","click","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","Inject","index.VirtualScroll","index.CheckBoxSelection"],"mappings":"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,IACzCgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,eAAY,IACvCgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,oBAAiB,IAC5CgV,GACIY,WAAS,eACVwzB,EAAappC,UAAW,oBAAiB,IAC5CgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,mBAAgB,IAC3CgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,yBAAsB,IACjDgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,0BAAuB,IAClDgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,sBAAmB,IAC9CgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,uBAAoB,IAC/CgV,GACIY,WAAS,SACVwzB,EAAappC,UAAW,gBAAa,IACxCgV,GACIY,WAAS,OACVwzB,EAAappC,UAAW,WAAQ,IACnCgV,GACIyW,aAAY0d,KACbC,EAAappC,UAAW,mBAAgB,IAC3CgV,GACIY,WAAS,iBACVwzB,EAAappC,UAAW,sBAAmB,IAC9CgV,GACIY,WAAS,OACVwzB,EAAappC,UAAW,YAAS,IACpCgV,GACIY,WAAS,SACVwzB,EAAappC,UAAW,YAAS,IACpCgV,GACIY,WAAS,MACVwzB,EAAappC,UAAW,aAAU,IACrCgV,GACIY,YAAS,IACVwzB,EAAappC,UAAW,eAAY,IACvCgV,GACI0W,WACD0d,EAAappC,UAAW,oBAAiB,IAC5CgV,GACI0W,WACD0d,EAAappC,UAAW,iBAAc,IACzCgV,GACI0W,WACD0d,EAAappC,UAAW,aAAU,IACrCgV,GACI0W,WACD0d,EAAappC,UAAW,YAAS,IACpCgV,GACI0W,WACD0d,EAAappC,UAAW,WAAQ,IACnCgV,GACI0W,WACD0d,EAAappC,UAAW,cAAW,IACtCgV,GACI0W,WACD0d,EAAappC,UAAW,gBAAa,IACxCgV,GACI0W,WACD0d,EAAappC,UAAW,gBAAa,IACxCgV,GACI0W,WACD0d,EAAappC,UAAW,gBAAa,IACxCgV,GACI0W,WACD0d,EAAappC,UAAW,YAAS,IACpCgV,GACI0W,WACD0d,EAAappC,UAAW,eAAY,IACvCgV,GACI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"}