@syncfusion/ej2-dropdowns 23.2.7-52849 → 24.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +260 -0
- package/CHANGELOG.md +2038 -2152
- package/{ReadMe.md → README.md} +217 -217
- package/dist/ej2-dropdowns.min.js +10 -0
- package/dist/ej2-dropdowns.umd.min.js +10 -1
- package/dist/ej2-dropdowns.umd.min.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es2015.js +709 -172
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +870 -332
- package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
- package/dist/global/ej2-dropdowns.min.js +11 -0
- package/dist/global/ej2-dropdowns.min.js.map +1 -0
- package/dist/global/index.d.ts +14 -0
- package/helpers/e2e/autocomplete.js +13 -13
- package/helpers/e2e/combobox.js +13 -13
- package/helpers/e2e/dropdownlist.js +13 -13
- package/helpers/e2e/index.js +3 -3
- package/helpers/e2e/listboxHelper.js +13 -13
- package/helpers/e2e/multiselect.js +13 -13
- package/license +2 -2
- package/package.json +80 -80
- package/src/auto-complete/auto-complete-model.d.ts +188 -188
- package/src/auto-complete/auto-complete.d.ts +12 -12
- package/src/auto-complete/auto-complete.js +30 -25
- package/src/combo-box/combo-box-model.d.ts +224 -224
- package/src/combo-box/combo-box.d.ts +27 -27
- package/src/combo-box/combo-box.js +103 -31
- package/src/common/incremental-search.d.ts +1 -1
- package/src/common/incremental-search.js +50 -7
- package/src/common/interface.d.ts +2 -0
- package/src/common/virtual-scroll.js +68 -47
- package/src/drop-down-base/drop-down-base-model.d.ts +200 -200
- package/src/drop-down-base/drop-down-base.d.ts +38 -18
- package/src/drop-down-base/drop-down-base.js +173 -60
- package/src/drop-down-list/drop-down-list-model.d.ts +202 -202
- package/src/drop-down-list/drop-down-list.d.ts +14 -7
- package/src/drop-down-list/drop-down-list.js +325 -61
- package/src/drop-down-tree/drop-down-tree-model.d.ts +468 -468
- package/src/drop-down-tree/drop-down-tree.js +43 -39
- package/src/list-box/list-box-model.d.ts +193 -193
- package/src/list-box/list-box.d.ts +2 -2
- package/src/list-box/list-box.js +27 -20
- package/src/mention/mention-model.d.ts +261 -261
- package/src/mention/mention.js +24 -20
- package/src/multi-select/checkbox-selection.js +4 -1
- package/src/multi-select/multi-select-model.d.ts +512 -512
- package/src/multi-select/multi-select.js +23 -21
- package/styles/auto-complete/_all.scss +1 -1
- package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
- package/styles/auto-complete/_bootstrap-definition.scss +2 -2
- package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
- package/styles/auto-complete/_bootstrap5-definition.scss +2 -2
- package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
- package/styles/auto-complete/_fabric-definition.scss +2 -2
- package/styles/auto-complete/_fluent-definition.scss +2 -2
- package/styles/auto-complete/_fusionnew-definition.scss +2 -2
- package/styles/auto-complete/_highcontrast-definition.scss +2 -2
- package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
- package/styles/auto-complete/_material-dark-definition.scss +2 -2
- package/styles/auto-complete/_material-definition.scss +2 -2
- package/styles/auto-complete/_material3-definition.scss +2 -2
- package/styles/auto-complete/_tailwind-definition.scss +2 -2
- package/styles/auto-complete/material3-dark.scss +1 -1
- package/styles/auto-complete/material3.scss +1 -1
- package/styles/combo-box/_all.scss +1 -1
- package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
- package/styles/combo-box/_bootstrap-definition.scss +2 -2
- package/styles/combo-box/_bootstrap4-definition.scss +11 -11
- package/styles/combo-box/_bootstrap5-definition.scss +2 -2
- package/styles/combo-box/_fabric-dark-definition.scss +2 -2
- package/styles/combo-box/_fabric-definition.scss +2 -2
- package/styles/combo-box/_fluent-definition.scss +2 -2
- package/styles/combo-box/_fusionnew-definition.scss +2 -2
- package/styles/combo-box/_highcontrast-definition.scss +2 -2
- package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
- package/styles/combo-box/_material-dark-definition.scss +2 -2
- package/styles/combo-box/_material-definition.scss +2 -2
- package/styles/combo-box/_material3-definition.scss +2 -2
- package/styles/combo-box/_tailwind-definition.scss +2 -2
- package/styles/combo-box/material3-dark.scss +1 -1
- package/styles/combo-box/material3.scss +1 -1
- package/styles/drop-down-base/_all.scss +2 -2
- package/styles/drop-down-base/_bootstrap-dark-definition.scss +83 -83
- package/styles/drop-down-base/_bootstrap-definition.scss +83 -83
- package/styles/drop-down-base/_bootstrap4-definition.scss +90 -90
- package/styles/drop-down-base/_bootstrap5-definition.scss +117 -117
- package/styles/drop-down-base/_definition.scss +23 -23
- package/styles/drop-down-base/_fabric-dark-definition.scss +86 -86
- package/styles/drop-down-base/_fabric-definition.scss +84 -84
- package/styles/drop-down-base/_fluent-definition.scss +121 -121
- package/styles/drop-down-base/_fusionnew-definition.scss +117 -117
- package/styles/drop-down-base/_highcontrast-definition.scss +105 -105
- package/styles/drop-down-base/_highcontrast-light-definition.scss +105 -105
- package/styles/drop-down-base/_layout.scss +195 -195
- package/styles/drop-down-base/_material-dark-definition.scss +86 -86
- package/styles/drop-down-base/_material-definition.scss +85 -85
- package/styles/drop-down-base/_material3-definition.scss +87 -87
- package/styles/drop-down-base/_tailwind-definition.scss +129 -129
- package/styles/drop-down-base/_theme.scss +391 -391
- package/styles/drop-down-base/material3-dark.scss +1 -1
- package/styles/drop-down-base/material3.scss +1 -1
- package/styles/drop-down-list/_all.scss +3 -3
- package/styles/drop-down-list/_bootstrap-dark-definition.scss +157 -157
- package/styles/drop-down-list/_bootstrap-definition.scss +156 -156
- package/styles/drop-down-list/_bootstrap4-definition.scss +202 -202
- package/styles/drop-down-list/_bootstrap5-definition.scss +201 -201
- package/styles/drop-down-list/_fabric-dark-definition.scss +128 -128
- package/styles/drop-down-list/_fabric-definition.scss +124 -124
- package/styles/drop-down-list/_fluent-definition.scss +185 -185
- package/styles/drop-down-list/_fusionnew-definition.scss +201 -201
- package/styles/drop-down-list/_highcontrast-definition.scss +142 -142
- package/styles/drop-down-list/_highcontrast-light-definition.scss +144 -144
- package/styles/drop-down-list/_layout.scss +310 -310
- package/styles/drop-down-list/_material-dark-definition.scss +143 -143
- package/styles/drop-down-list/_material-definition.scss +167 -167
- package/styles/drop-down-list/_material3-definition.scss +180 -180
- package/styles/drop-down-list/_tailwind-definition.scss +134 -134
- package/styles/drop-down-list/_theme.scss +10 -10
- package/styles/drop-down-list/icons/_bootstrap-dark.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap4.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap5.scss +14 -14
- package/styles/drop-down-list/icons/_fabric-dark.scss +14 -14
- package/styles/drop-down-list/icons/_fabric.scss +14 -14
- package/styles/drop-down-list/icons/_fluent.scss +14 -14
- package/styles/drop-down-list/icons/_fusionnew.scss +14 -14
- package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
- package/styles/drop-down-list/icons/_highcontrast.scss +14 -14
- package/styles/drop-down-list/icons/_material-dark.scss +14 -14
- package/styles/drop-down-list/icons/_material.scss +14 -14
- package/styles/drop-down-list/icons/_material3.scss +14 -14
- package/styles/drop-down-list/icons/_tailwind.scss +14 -14
- package/styles/drop-down-list/material3-dark.scss +1 -1
- package/styles/drop-down-list/material3.scss +1 -1
- package/styles/drop-down-tree/_all.scss +2 -2
- package/styles/drop-down-tree/_bootstrap-dark-definition.scss +71 -71
- package/styles/drop-down-tree/_bootstrap-definition.scss +70 -70
- package/styles/drop-down-tree/_bootstrap4-definition.scss +71 -71
- package/styles/drop-down-tree/_bootstrap5-definition.scss +59 -59
- package/styles/drop-down-tree/_fabric-dark-definition.scss +71 -71
- package/styles/drop-down-tree/_fabric-definition.scss +71 -71
- package/styles/drop-down-tree/_fluent-definition.scss +65 -65
- package/styles/drop-down-tree/_fusionnew-definition.scss +59 -59
- package/styles/drop-down-tree/_highcontrast-definition.scss +71 -71
- package/styles/drop-down-tree/_highcontrast-light-definition.scss +71 -71
- package/styles/drop-down-tree/_layout.scss +1418 -1418
- package/styles/drop-down-tree/_material-dark-definition.scss +72 -72
- package/styles/drop-down-tree/_material-definition.scss +72 -72
- package/styles/drop-down-tree/_material3-definition.scss +76 -76
- package/styles/drop-down-tree/_tailwind-definition.scss +61 -61
- package/styles/drop-down-tree/_theme.scss +132 -132
- package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap5.scss +11 -11
- package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_fabric.scss +11 -11
- package/styles/drop-down-tree/icons/_fluent.scss +11 -11
- package/styles/drop-down-tree/icons/_fusionnew.scss +11 -11
- package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
- package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
- package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_material.scss +11 -11
- package/styles/drop-down-tree/icons/_material3.scss +11 -11
- package/styles/drop-down-tree/icons/_tailwind-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_tailwind.scss +11 -11
- package/styles/drop-down-tree/material3-dark.scss +1 -1
- package/styles/drop-down-tree/material3.scss +1 -1
- package/styles/list-box/_all.scss +2 -2
- package/styles/list-box/_bootstrap-dark-definition.scss +126 -126
- package/styles/list-box/_bootstrap-definition.scss +119 -119
- package/styles/list-box/_bootstrap4-definition.scss +124 -124
- package/styles/list-box/_bootstrap5-definition.scss +120 -120
- package/styles/list-box/_fabric-dark-definition.scss +126 -126
- package/styles/list-box/_fabric-definition.scss +119 -119
- package/styles/list-box/_fluent-definition.scss +120 -120
- package/styles/list-box/_fusionnew-definition.scss +111 -111
- package/styles/list-box/_highcontrast-definition.scss +119 -119
- package/styles/list-box/_highcontrast-light-definition.scss +126 -126
- package/styles/list-box/_layout.scss +542 -542
- package/styles/list-box/_material-dark-definition.scss +126 -126
- package/styles/list-box/_material-definition.scss +119 -119
- package/styles/list-box/_material3-definition.scss +119 -119
- package/styles/list-box/_tailwind-definition.scss +119 -119
- package/styles/list-box/_theme.scss +382 -382
- package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
- package/styles/list-box/icons/_bootstrap.scss +25 -25
- package/styles/list-box/icons/_bootstrap4.scss +25 -25
- package/styles/list-box/icons/_bootstrap5.scss +25 -25
- package/styles/list-box/icons/_fabric-dark.scss +25 -25
- package/styles/list-box/icons/_fabric.scss +25 -25
- package/styles/list-box/icons/_fluent.scss +25 -25
- package/styles/list-box/icons/_fusionnew.scss +25 -25
- package/styles/list-box/icons/_highcontrast-light.scss +25 -25
- package/styles/list-box/icons/_highcontrast.scss +25 -25
- package/styles/list-box/icons/_material-dark.scss +25 -25
- package/styles/list-box/icons/_material.scss +25 -25
- package/styles/list-box/icons/_material3.scss +25 -25
- package/styles/list-box/icons/_tailwind-dark.scss +25 -25
- package/styles/list-box/icons/_tailwind.scss +25 -25
- package/styles/list-box/material3-dark.scss +1 -1
- package/styles/list-box/material3.scss +1 -1
- package/styles/material3-dark.scss +1 -1
- package/styles/material3.scss +1 -1
- package/styles/mention/_all.scss +1 -1
- package/styles/mention/_bootstrap-dark-definition.scss +3 -3
- package/styles/mention/_bootstrap-definition.scss +3 -3
- package/styles/mention/_bootstrap4-definition.scss +3 -3
- package/styles/mention/_bootstrap5-definition.scss +1 -1
- package/styles/mention/_fabric-dark-definition.scss +2 -2
- package/styles/mention/_fabric-definition.scss +3 -3
- package/styles/mention/_fluent-definition.scss +1 -1
- package/styles/mention/_fusionnew-definition.scss +1 -1
- package/styles/mention/_highcontrast-definition.scss +3 -3
- package/styles/mention/_highcontrast-light-definition.scss +3 -3
- package/styles/mention/_layout.scss +6 -6
- package/styles/mention/_material-dark-definition.scss +3 -3
- package/styles/mention/_material-definition.scss +3 -3
- package/styles/mention/_material3-definition.scss +1 -1
- package/styles/mention/_tailwind-definition.scss +1 -1
- package/styles/mention/material3-dark.scss +1 -1
- package/styles/mention/material3.scss +1 -1
- package/styles/multi-select/_all.scss +2 -2
- package/styles/multi-select/_bootstrap-dark-definition.scss +203 -203
- package/styles/multi-select/_bootstrap-definition.scss +192 -192
- package/styles/multi-select/_bootstrap4-definition.scss +278 -278
- package/styles/multi-select/_bootstrap5-definition.scss +230 -230
- package/styles/multi-select/_fabric-dark-definition.scss +192 -192
- package/styles/multi-select/_fabric-definition.scss +183 -183
- package/styles/multi-select/_fluent-definition.scss +241 -241
- package/styles/multi-select/_fusionnew-definition.scss +227 -227
- package/styles/multi-select/_highcontrast-definition.scss +303 -303
- package/styles/multi-select/_highcontrast-light-definition.scss +297 -297
- package/styles/multi-select/_layout.scss +2199 -2199
- package/styles/multi-select/_material-dark-definition.scss +230 -230
- package/styles/multi-select/_material-definition.scss +223 -223
- package/styles/multi-select/_material3-definition.scss +246 -246
- package/styles/multi-select/_tailwind-definition.scss +235 -235
- package/styles/multi-select/_theme.scss +586 -586
- package/styles/multi-select/icons/_bootstrap-dark.scss +26 -26
- package/styles/multi-select/icons/_bootstrap.scss +26 -26
- package/styles/multi-select/icons/_bootstrap4.scss +37 -37
- package/styles/multi-select/icons/_bootstrap5.scss +26 -26
- package/styles/multi-select/icons/_fabric-dark.scss +26 -26
- package/styles/multi-select/icons/_fabric.scss +26 -26
- package/styles/multi-select/icons/_fluent.scss +55 -55
- package/styles/multi-select/icons/_fusionnew.scss +26 -26
- package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
- package/styles/multi-select/icons/_highcontrast.scss +26 -26
- package/styles/multi-select/icons/_material-dark.scss +693 -693
- package/styles/multi-select/icons/_material.scss +693 -693
- package/styles/multi-select/icons/_material3.scss +692 -692
- package/styles/multi-select/icons/_tailwind.scss +26 -26
- package/styles/multi-select/material3-dark.scss +1 -1
- package/styles/multi-select/material3.scss +1 -1
- package/tslint.json +111 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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 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, '<span class=\"e-highlight\">$1</span>');\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 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 = '<input placeholder=\"' + placeholder + '\"/>';\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 } 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 if (!isNullOrUndefined(this.parent.query)) {\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 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 () {\n // eslint-disable-next-line\n var currentData = [];\n for (var i = this.parent.viewPortInfo.startIndex; i < this.parent.viewPortInfo.endIndex; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.renderItems(currentData, this.parent.fields);\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 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 };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var sortedDataStartIndex = 0;\n var vEndIndex = this.parent && this.parent.viewPortInfo.endIndex !== 0 ? this.parent.viewPortInfo.endIndex : sortedDataStartIndex + this.parent.getItems().length;\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.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n }\n this.setCurrentViewDataAsync();\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) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n this.parent.isCustomFilter = false;\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction) {\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.getPageCount = function (popupElement, returnExactCount) {\n if (returnExactCount === void 0) { returnExactCount = false; }\n var list = popupElement && popupElement.querySelector('.e-content');\n if (list) {\n var liHeight = list.classList.contains('e-nodata') ? null : getComputedStyle(list.querySelectorAll('.e-list-item')[0], null).getPropertyValue('height');\n var pageCount = list.getBoundingClientRect().height / parseInt(liHeight, 10);\n return returnExactCount ? pageCount : Math.round(pageCount);\n }\n return 0;\n };\n ;\n VirtualScroll.prototype.getRowHeight = function () {\n return (isNullOrUndefined(this.parent.liCollections) || this.parent.liCollections.length == 0) ? 0 : Math.ceil(this.parent.liCollections[0].getBoundingClientRect().height);\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 ? 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.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';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 10;\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 (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) {\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.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n 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 && !_this.virtualGroupDataSource) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!_this.virtualGroupDataSource && _this.isVirtualizationEnabled) {\n _this.isRemoteDataUpdated = true;\n if ((_this.getModuleName() === 'combobox' && _this.isAllowFiltering && _this.isVirtualizationEnabled && e.result)) {\n e.result = e.result.result;\n }\n if (e.result.length > 0) {\n var dataSource_2 = e.result;\n if (_this.isVirtualizationEnabled && _this.fields.groupBy) {\n var data = new DataManager(dataSource_2).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n else {\n _this.virtualGroupDataSource = dataSource_2;\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.setListData(dataSource_2, fields, query, event);\n return;\n }\n }\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.updatePopupState();\n return;\n }\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 (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n _this.dataCount = e.count;\n _this.totalItemCount = e.count;\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\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 ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (_this.isVirtualizationEnabled && _this.getModuleName() === 'autocomplete' && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n var newQuery = _this.getQuery(eventArgs.query);\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n break;\n }\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.dataCount = listItems.count;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.totalItemCount = listItems.count;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\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 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.updatePopupState = function () {\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.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled) {\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 }\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 /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\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 && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, 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 var groupListLength = this.list.querySelectorAll('.e-list-group-item').length;\n var loadedGroupList = 0;\n if (isCount) {\n count++;\n }\n if (this.updateGroupHeader(index, liCollections, target)) {\n loadedGroupList++;\n if (count >= this.getPageCount()) {\n break;\n }\n if (groupListLength <= loadedGroupList) {\n break;\n }\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 this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n 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 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 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');\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 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 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 = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * 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) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n for (var i = 0; i < listItems.children.length; i++) {\n if (!isNullOrUndefined(value) && listItems.children[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n 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) {\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) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n 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 }\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 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 this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n 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]) {\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 DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","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/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\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 * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.skeletonCount = 32;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\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.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isTouched = false;\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 _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.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n 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 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.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.previousValue === dataItem.value) {\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.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n 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)) {\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.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 DropDownList.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 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 = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\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 this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\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 }\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.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 && !this.fields.groupBy && this.getModuleName() !== 'combobox') {\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 }\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 this.setSelection(nextItem, e);\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);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\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 var count = (pageCount * 2) - 4;\n this.activeIndex = Math.round(count);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = 1;\n this.pageDownSelection(this.activeIndex + 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 (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) || isVirtualKeyAction) {\n previousItem = 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 };\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.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n 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 this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n 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.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);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\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);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n var _this = this;\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) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(new Predicate(fields, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.itemData = e.result[0];\n var dataItem = _this.getItemData();\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': dataItem.value });\n }\n }\n });\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\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': dataItem.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) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '<option selected>' + this.text + '</option>';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n 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.getFilteringSkeletonCount = function () {\n var difference = this.dataCount - this.viewPortInfo.endIndex;\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : difference > this.skeletonCount ? this.skeletonCount : difference > 0 ? difference : 0;\n var skeletonUpdated = true;\n if (this.getModuleName() === 'autocomplete' && (this.totalItemCount != 0 && 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 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 DropDownList.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listHeight != null ? parseInt(this.listHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 2 < this.itemCount ? this.itemCount : actualCount * 2;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2) + 2;\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\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 if (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded) {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n filterQuery.take(takeValue);\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.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 === '') ?\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 // 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.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.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.enableVirtualization) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownListClasses.virtualList, styles: 'overflow: inherit' });\n if (this.enableVirtualization && 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.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\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 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.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // 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.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_5 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_5) ||\n (getValue(_this.fields.value, data) === value_5));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n 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 findEle = this.findListElement(this.list, 'li', 'data-value', this.value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.checkAndResetCache = function () {\n if (this.enableVirtualization) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = { currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount, };\n this.selectedValueInfo = null;\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.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 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownList.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if (this.getModuleName() === 'autocomplete' && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\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.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n 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 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.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _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 _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 _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id);\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 this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n 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 && (!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 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 nextOffset = nextOffset + (this.selectedLI.offsetHeight * liCount);\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 && 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 nextOffset = nextOffset - (this.selectedLI.offsetHeight * liCount);\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 if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n 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 (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\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() && this.value != null && 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: 0,\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\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 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 === 'Auto') {\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 this.inputElement.setAttribute('aria-controls', this.element.id + '_popups');\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 }\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 = 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) {\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))) || !(Array.isArray(props.dataSource) && props.dataSource.length === 0)) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // 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)) {\n newProp.index = this.preselectedIndex;\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 (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.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n 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.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n 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 _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.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 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 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 element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (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 === 'Auto') {\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') {\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 === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(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(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};\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 * <input type=\"text\" id=\"tree\"></input>\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 // eslint-disable-next-line\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 this.ensureAutoCheck();\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 document.body.appendChild(this.popupDiv);\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.ensureAutoCheck = function () {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\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.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\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,\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 (value === '') {\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(value, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = _this.nestedFilter(value, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\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.nestedFilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n // eslint-disable-next-line\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n // eslint-disable-next-line\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\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 // eslint-disable-next-line\n var matchedData = [];\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n // eslint-disable-next-line\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][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 // eslint-disable-next-line\n DropDownTree.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.fields.text];\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 };\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 case 'shiftTab':\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 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 var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\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': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\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.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 // eslint-disable-next-line\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 var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\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' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNOU(this.htmlAttributes[\"\" + htmlAttr])) {\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n DropDownTree.prototype.getItems = function (givenText) {\n // eslint-disable-next-line\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\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 // eslint-disable-next-line\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n // eslint-disable-next-line\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\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 // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), 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.id);\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 if (this.isReact)\n this.refresh();\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 }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled) {\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 /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals);\n /* eslint-enable */\n _this.renderReactTemplates();\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 = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n if (_this.checkSelectAll && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\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.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) && 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 this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\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, 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 // eslint-disable-next-line\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 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])) || !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 // eslint-disable-next-line\n var checkData = args.data;\n // eslint-disable-next-line\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 = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\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 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 var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\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 // eslint-disable-next-line\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 .e-checkbox-wrapper[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 (args) {\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 /* eslint-enable */\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) {\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 // eslint-disable-next-line\n DropDownTree.prototype.getSelectedData = function (value) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 += '<option selected value =\"' + this.value[i] + '\">' +\n this.selectedText[this.selectedText.length - 1] + '</option>';\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n var e = void 0;\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 this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n // eslint-disable-next-line\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 (this.value == [] && 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 = true;\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.ensureAutoCheck();\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 /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 this.ensureAutoCheck();\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 this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\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 = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\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 /**\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 // eslint-disable-next-line\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 };\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 this.trigger('close', eventArgs);\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(false)\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/// <reference path='../drop-down-list/drop-down-list-model.d.ts'/>\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';\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 * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\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 var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\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.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\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) && 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 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') {\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 this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !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.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = 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 (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 (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 this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && 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 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 this.setProperties({ value: value });\n if (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 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 changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\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);\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 if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\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 if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.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 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/// <reference path='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach } 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 * <input id=\"list\" type=\"text\"/>\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 filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : 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 if ((!this.enableVirtualization) || (this.enableVirtualization && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource)))) {\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 && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n filterQuery.skip(this.virtualItemStartIndex);\n filterQuery.take(takeValue);\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.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.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 var isHtmlElement = /<[^>]*>/g.test(e.item.innerText);\n if (isHtmlElement) {\n e.item.innerText = e.item.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\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 true && this.inputElement.value.trim() !== '';\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 (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 !== '' ? 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 }\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 }, 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/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { 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 * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var multiselectObj = new Multiselect();\n * multiselectObj.appendTo(\"#list\");\n * </script>\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.scrollFocusStatus = false;\n _this.keyDownStatus = false;\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.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 _this.loadTemplate();\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.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.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\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 valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\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 element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\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 Search(this.value[this.value.length - 1], 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 this.scrollBottom(activeElement.item, activeElement.index);\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 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.value.slice();\n }\n var customValue = 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) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\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 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 /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\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) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\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) {\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.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 return;\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 this.initialValueUpdate();\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.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 ? <HTMLElement>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.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 ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\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') {\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) {\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 return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\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 {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = 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 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 this.resetList(dataSource, fields, query);\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 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 if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\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 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 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 === 'Auto') {\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: oldVal,\n value: 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 };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = 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.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\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 this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\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 this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\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) {\n this.removeFocus();\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 element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\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.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\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 };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\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) {\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);\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.value[this.value.length - 1];\n this.removeValue(temp, 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.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) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (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 = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(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 this.onActionComplete(list, this.mainData);\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.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), 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) {\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 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 this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\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 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.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 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.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 this.updateMainList(true, value, 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.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = 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 element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = 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 var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\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 if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\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, value);\n _this.removeChip(value);\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)) {\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 }\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) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\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.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\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 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 _this.updateListSelectEventCallback(value, element, eve);\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);\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.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() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\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.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.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 }\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, 'mouseup', 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 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 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.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 _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\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 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 };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\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 };\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 this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\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.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', 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 this.setProperties({ value: textVal }, 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 this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\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.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\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 this.addItem(newValue, indexItem);\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 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.value.indexOf(li.getAttribute('data-value')) > -1) {\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 ? <HTMLElement>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.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.value.indexOf(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 var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\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 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 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)) {\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 var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\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 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 this.updateWrapperText(this.viewWrapper, data);\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)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\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 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 if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = 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)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\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)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\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.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) {\n var index_1 = 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 while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\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 }, 0);\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 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.value.indexOf(value) < 0) {\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 this.updateHiddenElement();\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 += '<option selected value =\"' + value + '\">' + index + '</option>';\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-labelledby', 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)) {\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 };\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 this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\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.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\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) {\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 this.initialValueUpdate();\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 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 _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 }\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 var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\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 }\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-labelledby', this.chipCollectionWrapper.id);\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 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.checkInitialValue = function () {\n var _this = this;\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 valueCol.push(opt.getAttribute('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 (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\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.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.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\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'];\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 }, 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(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", 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(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 &&\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.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\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 prepend([ulEle_1], this.parent.list);\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/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\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 } 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';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\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 * <select id=\"listbox\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\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 this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\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 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) {\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, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\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 _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 this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\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 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 _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 }\n this.initWrapper();\n this.setSelection();\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 var filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n var txtLength = this.filterInput.value.length;\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 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 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, index) {\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 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 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 fListBox.updateMainList();\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 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 (isRefresh) {\n var noRecElem = fListBox.ulElement.childNodes[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, \n // eslint-disable-next-line prefer-spread\n Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), 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 < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (var i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n var fliCollections = [].slice.call(fListBox.liCollections);\n var tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.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\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 = [];\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 (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 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 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 }\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 (values, isSelect, isText) {\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 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) {\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) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n li.focus();\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n li.focus();\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 += '<option selected>' + this.value[i] + '</option>';\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 return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\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 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 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 { KeyboardEvents, 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.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n /**\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.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\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 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.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 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 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.keyboardModule.destroy();\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 if (document.activeElement != this.inputElement) {\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 // 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 ((!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.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (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)) {\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 this.queryString = lastWordRange.replace(this.mentionChar, '');\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) {\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)) {\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 = 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 (this.initRemoteRender && !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 && _this.inputElement.parentElement.parentElement &&\n _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {\n if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);\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 };\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 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: rect.top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rect.left + 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: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rect.left + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n 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, '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 * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\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 Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\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 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 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 '<span contenteditable=\"true\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.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);\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","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","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","viewPortInfo","startIndex","alreadyAddedData","renderItems","virtualTrackElement","list","getElementsByClassName","style","GetVirtualTrackHeight","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","getItems","isOpenPopup","selectedValueInfo","Query","virtualScrollRefreshAsync","_a","isTyped","filterInput","getSkeletonCount","skeletonCount","itemCount","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","virtualListCount","listElement","translateY","offsetHeight","transform","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","updateSelectionList","previousInfo","popupElement","returnExactCount","liHeight","getComputedStyle","getPropertyValue","height","parseInt","Math","round","getRowHeight","ceil","isscrollAction","infoType","offsets","previousEndIndex","vHeight","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","floor","eIndex","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","DropDownBase","options","preventChange","isAngular","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isAllowFiltering","virtualizedItemsCount","isRemoteDataUpdated","isIncrementalRequest","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","ignoreAccent","checkValueCase","isTextByValue","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","getValue","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","setAttribute","HTMLElement","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","getTextByValue","properties","allowCustomValue","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","trigger","showSpinner","virtualGroupDataSource","emptyDataRequest","executeQuery","getQuery","dataSource_2","hideSpinner","executeLocal","records","updatePopupState","count","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","catch","onActionFailure","dataManager","queryElements","nos","localDataArgs","itemTemplate","childElementCount","updateDataList","updateRemoteData","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","findListElement","findNode","attribute","liElement","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","notify","module","isReact","clearTemplate","fixedHeaderElement","postRender","focusItem","selectedItem","updateVirtualizationProperties","filtering","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","sortOrder","getSortedDataSource","groupDataSource","take","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","zIndex","isDownkey","getValidLi","topIndex","isCount","groupListLength","loadedGroupList","updateGroupHeader","updateGroupFixedHeader","oldUlElement","virtualUlElement","updateListElements","createVirtualContent","incrementalLiCollections","incrementalUlElement","incrementalListData","templateID","itemcheck","renderContentTemplate","parentElement","borderWidth","defaultView","isNaN","liWidth","offsetWidth","width","setStyleAttribute","firstLi","textField","getDataSource","addSorting","getIndexByValue","getIndexByValueFilter","selectData","dispatchEvent","evt","createEvent","initEvent","setFields","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","setUpdateInitial","updateData","j","keys","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","wrapperElement","insertBefore","removeScrollEvent","addItem","itemIndex","newList","itemsCount","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","splice","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","virtualList","inputObject","container","buttons","DropDownList","isListSearched","virtualListHeight","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isTouched","IsScrollerAtEnd","scrollHeight","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initRemoteRender","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","onChangeEvent","checkAndResetCache","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","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","window","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","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","offsetTop","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","value_4","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","where","Predicate","getItem","previousSelectedLI","aria-describedby","aria-activedescendant","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","searchLists","getFilteringSkeletonCount","difference","currentSkeletonCount","skeletonUpdated","abs","retainSkeleton","listHeight","actualCount","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","alreadySkipAdded","requiresCount","start","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","styles","virualElement","focusIndexItem","setSearchBox","createInput","filterBarPlaceholder","cssClass","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","skeleton","Skeleton","shape","appendTo","firstChild","outerHeight","tempItemCount","aria-hidden","aria-label","some","x","setInputValue","updateActionCompleteDataValues","allowCustom","isValueInList","addNewItem","valueToFind","isArray","fieldValue","checkField","newElement","value_5","actionCompleteDataUpdate","findEle","highlightedItem","heightDimension","refreshPopup","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","listitems","searchBoxHeight","maxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","collision","X","Y","position","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","innerHeight","border","popupOffset","lastItem","paddingBottom","popupWidth","isInitial","isInitialSelection","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","match","isFilterValue","scrollableParentElements_1","fixedHeader","removeChild","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","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","blur","attrArray","clear","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","ensureAutoCheck","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","mode","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","treeSettings","autoCheck","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","clearTimeout","filterHandler","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","nestedFilter","getTreeFields","portals","filteredFields","matchedDataSource","filteredChild","nestedChildFilter","node","isMatchedNode","matchedChildren","filteredItems","matchedData","parentId","parentValue","checkValue","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","isClearButtonClick","showOverAllClear","isValue","chipWrapper","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","observedArgs","isValueChange","keyEventArgs","showSelectAll","clickHandler","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","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","state","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","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","concat","updatePopupHeight","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","nodes","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","ensureVisible","getData","ComboBox","preventBlur","targetFocus","inputValue","customValue","valueMuteChange","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","changeData","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","charCodeAt","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","popupWrapper","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","getForQuery","predicate","or","adaptor","JsonAdaptor","proxy","presentItemValue","addNonPresentItems","updateActionList","mainData","mainListCollection","remoteCustomValue","checkForCustomValue","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","backCommand","dataChecks","customData","random","JSON","parse","stringify","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","getPagingCount","collection","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","onKeyDown","altKey","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","limit","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","moveByTop","filterInputClassName","updateCheck","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","hideElement","targetEle_1","clearAllCallback","element2","addValue","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","updateWrapperText","addValidInputClass","removeListSelection","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","index_1","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","map","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isDataSourceUpdate","ListBox_1","inputString","initLoad","isCustomFiltering","initialSelectedOptions","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","noRecElem","filterWireEvents","initToolbarAndStyles","setCheckboxPosition","setFiltering","filterElem","txtLength","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","Number","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","stopPropagation","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","isListResetted","isCollided","lineBreak","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isUpDownKey","rangetextContent","range","getCurrentRange","startContainer","currentRange","getTextRange","lastWordRange","getLastLetter","Regex","charRegex","isMatchedText","charAt","substring","lastIndexOf","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startOffset","startPos","words","popupEle_1","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","cssText","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","endOffset","collapse","getClientRects","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","frag","createDocumentFragment","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","index.DropDownList","Inject","index.VirtualScroll","index.ComboBox","index.AutoComplete","index.MultiSelect","index.CheckBoxSelection","index.ListBox"],"mappings":"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Y,WAAS,SACVinC,EAAY96C,UAAW,iBAAc,IACxCiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,kBAAe,IACzCiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,2BAAwB,IAClDiT,IACIY,gBACDinC,EAAY96C,UAAW,qBAAkB,IAC5CiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,oBAAiB,IAC3CiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,qBAAkB,IAC5CiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,qBAAkB,IAC5CiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,mBAAgB,IAC1CiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,qBAAkB,IAC5CiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,mBAAgB,IAC1CiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,uBAAoB,IAC9CiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,sBAAmB,IAC7CiT,IACIY,WAAS,MACVinC,EAAY96C,UAAW,6BAA0B,IACpDiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,eAAY,IACtCiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,WAAQ,IAClCiT,IACIY,WAAS,OACVinC,EAAY96C,UAAW,YAAS,IACnCiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,uBAAoB,IAC9CiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,yBAAsB,IAChDiT,IACIY,WAAS,YACVinC,EAAY96C,UAAW,WAAQ,IAClCiT,IACIY,WAAS,MACVinC,EAAY96C,UAAW,oBAAiB,IAC3CiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,iBAAc,IACxCiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,uBAAoB,IAC9CiT,IACIY,WAAS,UACVinC,EAAY96C,UAAW,qBAAkB,IAC5CiT,IACIY,YAAS,IACVinC,EAAY96C,UAAW,oBAAiB,IAC3CiT,IACIY,WAAS,eACVinC,EAAY96C,UAAW,oBAAiB,IAC3CiT,IACIY,WAAS,iBACVinC,EAAY96C,UAAW,sBAAmB,IAC7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"}
|