@syncfusion/ej2-dropdowns 29.2.8 → 29.2.11-81740

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.
Files changed (314) hide show
  1. package/{README.md → ReadMe.md} +217 -217
  2. package/dist/ej2-dropdowns.umd.min.js +1 -10
  3. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-dropdowns.es2015.js +186 -95
  5. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es5.js +352 -258
  7. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  8. package/license +2 -2
  9. package/package.json +36 -36
  10. package/src/auto-complete/auto-complete-model.d.ts +190 -190
  11. package/src/auto-complete/auto-complete.d.ts +12 -12
  12. package/src/auto-complete/auto-complete.js +21 -21
  13. package/src/combo-box/combo-box-model.d.ts +232 -232
  14. package/src/combo-box/combo-box.d.ts +26 -26
  15. package/src/combo-box/combo-box.js +29 -29
  16. package/src/common/incremental-search.js +1 -1
  17. package/src/common/virtual-scroll.js +46 -46
  18. package/src/drop-down-base/drop-down-base-model.d.ts +205 -205
  19. package/src/drop-down-base/drop-down-base.d.ts +15 -15
  20. package/src/drop-down-base/drop-down-base.js +21 -21
  21. package/src/drop-down-list/drop-down-list-model.d.ts +310 -310
  22. package/src/drop-down-list/drop-down-list.d.ts +5 -5
  23. package/src/drop-down-list/drop-down-list.js +21 -21
  24. package/src/drop-down-tree/drop-down-tree-model.d.ts +493 -493
  25. package/src/drop-down-tree/drop-down-tree.d.ts +2 -1
  26. package/src/drop-down-tree/drop-down-tree.js +24 -19
  27. package/src/list-box/list-box-model.d.ts +237 -237
  28. package/src/list-box/list-box.d.ts +2 -2
  29. package/src/list-box/list-box.js +19 -19
  30. package/src/mention/mention-model.d.ts +272 -272
  31. package/src/mention/mention.d.ts +1 -1
  32. package/src/mention/mention.js +29 -27
  33. package/src/multi-select/multi-select-model.d.ts +564 -564
  34. package/src/multi-select/multi-select.d.ts +2 -1
  35. package/src/multi-select/multi-select.js +143 -56
  36. package/styles/auto-complete/_all.scss +1 -1
  37. package/styles/auto-complete/_bds-definition.scss +2 -2
  38. package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
  39. package/styles/auto-complete/_bootstrap-definition.scss +2 -2
  40. package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
  41. package/styles/auto-complete/_bootstrap5-definition.scss +2 -2
  42. package/styles/auto-complete/_bootstrap5.3-definition.scss +2 -2
  43. package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
  44. package/styles/auto-complete/_fabric-definition.scss +2 -2
  45. package/styles/auto-complete/_fluent-definition.scss +2 -2
  46. package/styles/auto-complete/_fluent2-definition.scss +2 -2
  47. package/styles/auto-complete/_fusionnew-definition.scss +2 -2
  48. package/styles/auto-complete/_highcontrast-definition.scss +2 -2
  49. package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
  50. package/styles/auto-complete/_material-dark-definition.scss +2 -2
  51. package/styles/auto-complete/_material-definition.scss +2 -2
  52. package/styles/auto-complete/_material3-definition.scss +2 -2
  53. package/styles/auto-complete/_tailwind-definition.scss +2 -2
  54. package/styles/auto-complete/_tailwind3-definition.scss +2 -2
  55. package/styles/auto-complete/material3-dark.scss +1 -1
  56. package/styles/auto-complete/material3.scss +1 -1
  57. package/styles/combo-box/_all.scss +1 -1
  58. package/styles/combo-box/_bds-definition.scss +2 -2
  59. package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
  60. package/styles/combo-box/_bootstrap-definition.scss +2 -2
  61. package/styles/combo-box/_bootstrap4-definition.scss +11 -11
  62. package/styles/combo-box/_bootstrap5-definition.scss +2 -2
  63. package/styles/combo-box/_bootstrap5.3-definition.scss +2 -2
  64. package/styles/combo-box/_fabric-dark-definition.scss +2 -2
  65. package/styles/combo-box/_fabric-definition.scss +2 -2
  66. package/styles/combo-box/_fluent-definition.scss +2 -2
  67. package/styles/combo-box/_fluent2-definition.scss +2 -2
  68. package/styles/combo-box/_fusionnew-definition.scss +2 -2
  69. package/styles/combo-box/_highcontrast-definition.scss +2 -2
  70. package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
  71. package/styles/combo-box/_material-dark-definition.scss +2 -2
  72. package/styles/combo-box/_material-definition.scss +2 -2
  73. package/styles/combo-box/_material3-definition.scss +2 -2
  74. package/styles/combo-box/_tailwind-definition.scss +2 -2
  75. package/styles/combo-box/_tailwind3-definition.scss +2 -2
  76. package/styles/combo-box/material3-dark.scss +1 -1
  77. package/styles/combo-box/material3.scss +1 -1
  78. package/styles/drop-down-base/_all.scss +2 -2
  79. package/styles/drop-down-base/_bds-definition.scss +112 -112
  80. package/styles/drop-down-base/_bigger.scss +198 -198
  81. package/styles/drop-down-base/_bootstrap-dark-definition.scss +80 -80
  82. package/styles/drop-down-base/_bootstrap-definition.scss +78 -78
  83. package/styles/drop-down-base/_bootstrap4-definition.scss +83 -83
  84. package/styles/drop-down-base/_bootstrap5-definition.scss +98 -98
  85. package/styles/drop-down-base/_bootstrap5.3-definition.scss +98 -98
  86. package/styles/drop-down-base/_definition.scss +23 -23
  87. package/styles/drop-down-base/_fabric-dark-definition.scss +81 -81
  88. package/styles/drop-down-base/_fabric-definition.scss +79 -79
  89. package/styles/drop-down-base/_fluent-definition.scss +102 -102
  90. package/styles/drop-down-base/_fluent2-definition.scss +113 -113
  91. package/styles/drop-down-base/_fusionnew-definition.scss +98 -98
  92. package/styles/drop-down-base/_highcontrast-definition.scss +96 -96
  93. package/styles/drop-down-base/_highcontrast-light-definition.scss +96 -96
  94. package/styles/drop-down-base/_layout.scss +148 -148
  95. package/styles/drop-down-base/_material-dark-definition.scss +82 -82
  96. package/styles/drop-down-base/_material-definition.scss +81 -81
  97. package/styles/drop-down-base/_material3-definition.scss +73 -73
  98. package/styles/drop-down-base/_tailwind-definition.scss +107 -107
  99. package/styles/drop-down-base/_tailwind3-definition.scss +98 -98
  100. package/styles/drop-down-base/_theme.scss +303 -303
  101. package/styles/drop-down-base/material3-dark.scss +1 -1
  102. package/styles/drop-down-base/material3.scss +1 -1
  103. package/styles/drop-down-list/_all.scss +3 -3
  104. package/styles/drop-down-list/_bds-definition.scss +100 -100
  105. package/styles/drop-down-list/_bigger.scss +713 -713
  106. package/styles/drop-down-list/_bootstrap-dark-definition.scss +94 -94
  107. package/styles/drop-down-list/_bootstrap-definition.scss +93 -93
  108. package/styles/drop-down-list/_bootstrap4-definition.scss +122 -122
  109. package/styles/drop-down-list/_bootstrap5-definition.scss +135 -135
  110. package/styles/drop-down-list/_bootstrap5.3-definition.scss +136 -136
  111. package/styles/drop-down-list/_fabric-dark-definition.scss +72 -72
  112. package/styles/drop-down-list/_fabric-definition.scss +69 -69
  113. package/styles/drop-down-list/_fluent-definition.scss +128 -128
  114. package/styles/drop-down-list/_fluent2-definition.scss +101 -101
  115. package/styles/drop-down-list/_fusionnew-definition.scss +134 -134
  116. package/styles/drop-down-list/_highcontrast-definition.scss +83 -83
  117. package/styles/drop-down-list/_highcontrast-light-definition.scss +85 -85
  118. package/styles/drop-down-list/_layout.scss +284 -284
  119. package/styles/drop-down-list/_material-dark-definition.scss +110 -110
  120. package/styles/drop-down-list/_material-definition.scss +112 -112
  121. package/styles/drop-down-list/_material3-definition.scss +114 -114
  122. package/styles/drop-down-list/_tailwind-definition.scss +100 -100
  123. package/styles/drop-down-list/_tailwind3-definition.scss +135 -135
  124. package/styles/drop-down-list/_theme.scss +17 -17
  125. package/styles/drop-down-list/icons/_bds.scss +14 -14
  126. package/styles/drop-down-list/icons/_bootstrap-dark.scss +18 -18
  127. package/styles/drop-down-list/icons/_bootstrap.scss +18 -18
  128. package/styles/drop-down-list/icons/_bootstrap4.scss +18 -18
  129. package/styles/drop-down-list/icons/_bootstrap5.3.scss +18 -18
  130. package/styles/drop-down-list/icons/_bootstrap5.scss +18 -18
  131. package/styles/drop-down-list/icons/_fabric-dark.scss +18 -18
  132. package/styles/drop-down-list/icons/_fabric.scss +18 -18
  133. package/styles/drop-down-list/icons/_fluent.scss +18 -18
  134. package/styles/drop-down-list/icons/_fluent2.scss +18 -18
  135. package/styles/drop-down-list/icons/_fusionnew.scss +14 -14
  136. package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
  137. package/styles/drop-down-list/icons/_highcontrast.scss +18 -18
  138. package/styles/drop-down-list/icons/_material-dark.scss +18 -18
  139. package/styles/drop-down-list/icons/_material.scss +18 -18
  140. package/styles/drop-down-list/icons/_material3.scss +18 -18
  141. package/styles/drop-down-list/icons/_tailwind.scss +18 -18
  142. package/styles/drop-down-list/icons/_tailwind3.scss +14 -14
  143. package/styles/drop-down-list/material3-dark.scss +1 -1
  144. package/styles/drop-down-list/material3.scss +1 -1
  145. package/styles/drop-down-tree/_all.scss +2 -2
  146. package/styles/drop-down-tree/_bds-definition.scss +74 -74
  147. package/styles/drop-down-tree/_bigger.scss +561 -561
  148. package/styles/drop-down-tree/_bootstrap-dark-definition.scss +81 -81
  149. package/styles/drop-down-tree/_bootstrap-definition.scss +81 -81
  150. package/styles/drop-down-tree/_bootstrap4-definition.scss +85 -85
  151. package/styles/drop-down-tree/_bootstrap5-definition.scss +73 -73
  152. package/styles/drop-down-tree/_bootstrap5.3-definition.scss +74 -74
  153. package/styles/drop-down-tree/_fabric-dark-definition.scss +81 -81
  154. package/styles/drop-down-tree/_fabric-definition.scss +81 -81
  155. package/styles/drop-down-tree/_fluent-definition.scss +78 -78
  156. package/styles/drop-down-tree/_fluent2-definition.scss +85 -85
  157. package/styles/drop-down-tree/_fusionnew-definition.scss +69 -69
  158. package/styles/drop-down-tree/_highcontrast-definition.scss +81 -81
  159. package/styles/drop-down-tree/_highcontrast-light-definition.scss +81 -81
  160. package/styles/drop-down-tree/_layout.scss +942 -942
  161. package/styles/drop-down-tree/_material-dark-definition.scss +82 -82
  162. package/styles/drop-down-tree/_material-definition.scss +84 -84
  163. package/styles/drop-down-tree/_material3-definition.scss +84 -84
  164. package/styles/drop-down-tree/_tailwind-definition.scss +74 -74
  165. package/styles/drop-down-tree/_tailwind3-definition.scss +75 -75
  166. package/styles/drop-down-tree/_theme.scss +135 -135
  167. package/styles/drop-down-tree/icons/_bds.scss +11 -11
  168. package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
  169. package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
  170. package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
  171. package/styles/drop-down-tree/icons/_bootstrap5.3.scss +11 -11
  172. package/styles/drop-down-tree/icons/_bootstrap5.scss +11 -11
  173. package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
  174. package/styles/drop-down-tree/icons/_fabric.scss +11 -11
  175. package/styles/drop-down-tree/icons/_fluent.scss +11 -11
  176. package/styles/drop-down-tree/icons/_fluent2.scss +14 -14
  177. package/styles/drop-down-tree/icons/_fusionnew.scss +11 -11
  178. package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
  179. package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
  180. package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
  181. package/styles/drop-down-tree/icons/_material.scss +11 -11
  182. package/styles/drop-down-tree/icons/_material3.scss +11 -11
  183. package/styles/drop-down-tree/icons/_tailwind-dark.scss +11 -11
  184. package/styles/drop-down-tree/icons/_tailwind.scss +11 -11
  185. package/styles/drop-down-tree/icons/_tailwind3.scss +11 -11
  186. package/styles/drop-down-tree/material3-dark.scss +1 -1
  187. package/styles/drop-down-tree/material3.scss +1 -1
  188. package/styles/list-box/_all.scss +2 -2
  189. package/styles/list-box/_bds-definition.scss +136 -136
  190. package/styles/list-box/_bigger.scss +190 -190
  191. package/styles/list-box/_bootstrap-dark-definition.scss +126 -126
  192. package/styles/list-box/_bootstrap-definition.scss +119 -119
  193. package/styles/list-box/_bootstrap4-definition.scss +126 -126
  194. package/styles/list-box/_bootstrap5-definition.scss +121 -121
  195. package/styles/list-box/_bootstrap5.3-definition.scss +123 -123
  196. package/styles/list-box/_fabric-dark-definition.scss +124 -124
  197. package/styles/list-box/_fabric-definition.scss +119 -119
  198. package/styles/list-box/_fluent-definition.scss +120 -120
  199. package/styles/list-box/_fluent2-definition.scss +121 -121
  200. package/styles/list-box/_fusionnew-definition.scss +111 -111
  201. package/styles/list-box/_highcontrast-definition.scss +119 -119
  202. package/styles/list-box/_highcontrast-light-definition.scss +124 -124
  203. package/styles/list-box/_layout.scss +496 -496
  204. package/styles/list-box/_material-dark-definition.scss +124 -124
  205. package/styles/list-box/_material-definition.scss +119 -119
  206. package/styles/list-box/_material3-definition.scss +119 -119
  207. package/styles/list-box/_tailwind-definition.scss +119 -119
  208. package/styles/list-box/_tailwind3-definition.scss +123 -123
  209. package/styles/list-box/_theme.scss +327 -327
  210. package/styles/list-box/icons/_bds.scss +25 -25
  211. package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
  212. package/styles/list-box/icons/_bootstrap.scss +25 -25
  213. package/styles/list-box/icons/_bootstrap4.scss +25 -25
  214. package/styles/list-box/icons/_bootstrap5.3.scss +25 -25
  215. package/styles/list-box/icons/_bootstrap5.scss +25 -25
  216. package/styles/list-box/icons/_fabric-dark.scss +25 -25
  217. package/styles/list-box/icons/_fabric.scss +25 -25
  218. package/styles/list-box/icons/_fluent.scss +25 -25
  219. package/styles/list-box/icons/_fluent2.scss +25 -25
  220. package/styles/list-box/icons/_fusionnew.scss +25 -25
  221. package/styles/list-box/icons/_highcontrast-light.scss +25 -25
  222. package/styles/list-box/icons/_highcontrast.scss +25 -25
  223. package/styles/list-box/icons/_material-dark.scss +25 -25
  224. package/styles/list-box/icons/_material.scss +25 -25
  225. package/styles/list-box/icons/_material3.scss +25 -25
  226. package/styles/list-box/icons/_tailwind-dark.scss +25 -25
  227. package/styles/list-box/icons/_tailwind.scss +25 -25
  228. package/styles/list-box/icons/_tailwind3.scss +25 -25
  229. package/styles/list-box/material3-dark.scss +1 -1
  230. package/styles/list-box/material3.scss +1 -1
  231. package/styles/material3-dark.scss +1 -1
  232. package/styles/material3.scss +1 -1
  233. package/styles/mention/_all.scss +1 -1
  234. package/styles/mention/_bds-definition.scss +1 -1
  235. package/styles/mention/_bootstrap-dark-definition.scss +3 -3
  236. package/styles/mention/_bootstrap-definition.scss +3 -3
  237. package/styles/mention/_bootstrap4-definition.scss +3 -3
  238. package/styles/mention/_bootstrap5-definition.scss +1 -1
  239. package/styles/mention/_bootstrap5.3-definition.scss +1 -1
  240. package/styles/mention/_fabric-dark-definition.scss +2 -2
  241. package/styles/mention/_fabric-definition.scss +3 -3
  242. package/styles/mention/_fluent-definition.scss +1 -1
  243. package/styles/mention/_fluent2-definition.scss +1 -1
  244. package/styles/mention/_fusionnew-definition.scss +1 -1
  245. package/styles/mention/_highcontrast-definition.scss +3 -3
  246. package/styles/mention/_highcontrast-light-definition.scss +3 -3
  247. package/styles/mention/_layout.scss +6 -6
  248. package/styles/mention/_material-dark-definition.scss +3 -3
  249. package/styles/mention/_material-definition.scss +3 -3
  250. package/styles/mention/_material3-definition.scss +1 -1
  251. package/styles/mention/_tailwind-definition.scss +1 -1
  252. package/styles/mention/_tailwind3-definition.scss +1 -1
  253. package/styles/mention/material3-dark.scss +1 -1
  254. package/styles/mention/material3.scss +1 -1
  255. package/styles/multi-select/_all.scss +2 -2
  256. package/styles/multi-select/_bds-definition.scss +231 -231
  257. package/styles/multi-select/_bigger.scss +2002 -2002
  258. package/styles/multi-select/_bootstrap-dark-definition.scss +198 -198
  259. package/styles/multi-select/_bootstrap-definition.scss +187 -187
  260. package/styles/multi-select/_bootstrap4-definition.scss +236 -236
  261. package/styles/multi-select/_bootstrap5-definition.scss +229 -229
  262. package/styles/multi-select/_bootstrap5.3-definition.scss +229 -229
  263. package/styles/multi-select/_fabric-dark-definition.scss +190 -190
  264. package/styles/multi-select/_fabric-definition.scss +181 -181
  265. package/styles/multi-select/_fluent-definition.scss +236 -236
  266. package/styles/multi-select/_fluent2-definition.scss +234 -234
  267. package/styles/multi-select/_fusionnew-definition.scss +222 -222
  268. package/styles/multi-select/_highcontrast-definition.scss +302 -302
  269. package/styles/multi-select/_highcontrast-light-definition.scss +296 -296
  270. package/styles/multi-select/_layout.scss +1335 -1335
  271. package/styles/multi-select/_material-dark-definition.scss +248 -248
  272. package/styles/multi-select/_material-definition.scss +250 -250
  273. package/styles/multi-select/_material3-definition.scss +233 -233
  274. package/styles/multi-select/_tailwind-definition.scss +231 -231
  275. package/styles/multi-select/_tailwind3-definition.scss +227 -227
  276. package/styles/multi-select/_theme.scss +564 -564
  277. package/styles/multi-select/icons/_bds.scss +26 -26
  278. package/styles/multi-select/icons/_bootstrap-dark.scss +30 -30
  279. package/styles/multi-select/icons/_bootstrap.scss +30 -30
  280. package/styles/multi-select/icons/_bootstrap4.scss +32 -32
  281. package/styles/multi-select/icons/_bootstrap5.3.scss +30 -30
  282. package/styles/multi-select/icons/_bootstrap5.scss +30 -30
  283. package/styles/multi-select/icons/_fabric-dark.scss +30 -30
  284. package/styles/multi-select/icons/_fabric.scss +30 -30
  285. package/styles/multi-select/icons/_fluent.scss +38 -38
  286. package/styles/multi-select/icons/_fluent2.scss +347 -347
  287. package/styles/multi-select/icons/_fusionnew.scss +26 -26
  288. package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
  289. package/styles/multi-select/icons/_highcontrast.scss +30 -30
  290. package/styles/multi-select/icons/_material-dark.scss +348 -348
  291. package/styles/multi-select/icons/_material.scss +348 -348
  292. package/styles/multi-select/icons/_material3.scss +350 -350
  293. package/styles/multi-select/icons/_tailwind.scss +30 -30
  294. package/styles/multi-select/icons/_tailwind3.scss +26 -26
  295. package/styles/multi-select/material3-dark.scss +1 -1
  296. package/styles/multi-select/material3.scss +1 -1
  297. package/.eslintrc.json +0 -261
  298. package/dist/ej2-dropdowns.min.js +0 -10
  299. package/dist/global/ej2-dropdowns.min.js +0 -11
  300. package/dist/global/ej2-dropdowns.min.js.map +0 -1
  301. package/dist/global/index.d.ts +0 -14
  302. package/helpers/e2e/autocomplete.d.ts +0 -16
  303. package/helpers/e2e/autocomplete.js +0 -60
  304. package/helpers/e2e/combobox.d.ts +0 -17
  305. package/helpers/e2e/combobox.js +0 -63
  306. package/helpers/e2e/dropdownlist.d.ts +0 -20
  307. package/helpers/e2e/dropdownlist.js +0 -72
  308. package/helpers/e2e/index.d.ts +0 -4
  309. package/helpers/e2e/index.js +0 -11
  310. package/helpers/e2e/listboxHelper.d.ts +0 -22
  311. package/helpers/e2e/listboxHelper.js +0 -56
  312. package/helpers/e2e/multiselect.d.ts +0 -31
  313. package/helpers/e2e/multiselect.js +0 -105
  314. package/tslint.json +0 -111
@@ -1 +0,0 @@
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 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 * @param {boolean} [queryStringUpdated] - Optional parameter.\n * @param {string} [currentValue] - Optional parameter.\n * @param {boolean} [isVirtual] - Optional parameter.\n * @param {boolean} [refresh] - Optional parameter.\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// eslint-disable-next-line valid-jsdoc\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=true] - Specifies the case sensitive option for search operation.\n * @param {(string | number | boolean | { [key: string]: Object })[]} [dataSource] - Specifies the data source.\n * @param {{ text: string, value: string }} [fields] - Specifies the fields.\n * @param {string} [type] - Specifies the type.\n * @returns {{ item: Element | null, index: number | null }} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type, ignoreAccent) {\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 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 && data[fields.value] != null && checkField_1.getAttribute('data-value') === data[fields.value].toString()) ||\n (type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1)) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n var 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 (ignoreAccent && text && queryStr) {\n text = text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n queryStr = queryStr.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\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/**\n * @param {string} value - The value to escape.\n * @returns {string} Returns the escaped string.\n */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n/**\n * @param {string} elementId - The ID of the list element.\n * @returns {void}\n */\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<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 floatLabelElement.setAttribute('for', element.id);\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '<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, getValue } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2)\n <= _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 () {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n }\n else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = (totalData === this.parent.totalItemCount &&\n 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 query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder && this.parent.targetElement().trim() === '') {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount && this.parent.value.length !== this.parent.totalItemCount) {\n var oldUlElement_1 = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement_1) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement_1);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0)\n .take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ?\n this.parent.appendUncheckList : false;\n isListUpdated = false;\n }\n else {\n var oldUlElement_2 = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement_2) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement_2);\n }\n }\n isListUpdated = false;\n }\n else if (this.parent.viewPortInfo.startIndex !== 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex !== 0 &&\n this.parent.viewPortInfo.startIndex - this.parent.value.length !== this.parent.itemCount &&\n (this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length)) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n }\n else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone(); // Assuming query is of type any\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0\n ? this.parent.viewPortInfo.startIndex - this.parent.value.length\n : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox') {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + '.e-reorder');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value &&\n value !== null &&\n Array.isArray(this.parent.value) &&\n this.parent.value.length > 0 &&\n this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount + this.parent.value.length &&\n this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.isPreventScrollAction = true;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n }\n else if (this.parent.value === null || (this.parent.value && this.parent.value.length === 0)) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length !== this.parent.itemCount) {\n if (this.parent.hideSelectedItem) {\n var query = this.parent.value && this.parent.value.length > 0 ?\n this.parent.getForQuery(this.parent.value).clone() : new Query;\n if (this.parent.value && (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount +\n this.parent.value.length) && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n }\n else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex === 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex === this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n this.parent.updateSelectionList();\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n this.parent.checkMaxSelection();\n }\n this.parent.getSkeletonCount();\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 && this.parent.totalItemCount < this.parent.itemCount * 2 &&\n ((!(this.parent.dataSource instanceof DataManager)) || ((this.parent.dataSource instanceof DataManager) &&\n (this.parent.totalItemCount <= this.parent.itemCount))) ? 0 : this.parent.skeletonCount;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n var preventAction = this.component !== 'multiselect' || (this.component === 'multiselect' && ((!(this.parent.dataSource instanceof DataManager))) || (this.parent.dataSource instanceof DataManager && !isResetListCalled));\n if (virtualTrackElement && preventAction) {\n virtualTrackElement.style = this.parent.GetVirtualTrackHeight();\n }\n else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {\n var virualElement = this.parent.createElement('div', {\n id: this.parent.element.id + '_popup', className: 'e-virtual-ddl', styles: this.parent.GetVirtualTrackHeight()\n });\n this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.component !== 'multiselect' || (this.component === 'multiselect' && ((!(this.parent.dataSource instanceof DataManager))) || (this.parent.dataSource instanceof DataManager && (!isResetListCalled || this.parent.viewPortInfo.startIndex === 0)))) {\n this.parent.UpdateSkeleton();\n }\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 && preventAction) {\n (virtualContentElement).style = this.parent.getTransformValues();\n }\n if (this.parent.fields.groupBy) {\n this.parent.scrollStop();\n }\n if (this.parent.keyCode === 40 &&\n this.parent.isScrollChanged &&\n this.parent.hideSelectedItem &&\n !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised &&\n !(this.parent.totalItemCount === queryStartIndex &&\n this.parent.totalItemCount === queryEndIndex)) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' &&\n this.parent.hideSelectedItem &&\n this.parent.value &&\n Array.isArray(this.parent.value) &&\n this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' &&\n this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) ||\n (this.parent.dataSource instanceof DataManager &&\n !this.parent.isRequesting)) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString !== this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 &&\n this.parent.totalItemCount < (this.parent.itemCount * 2) && ((!(this.parent.dataSource instanceof DataManager)) ||\n ((this.parent.dataSource instanceof DataManager) && (this.parent.totalItemCount <= this.parent.itemCount))) ?\n 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.dataSource instanceof DataManager) ||\n (this.parent.dataSource instanceof DataManager &&\n !this.parent.isRequesting))) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.parent.getTransformValues();\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement ?\n this.parent.popupContentElement.getBoundingClientRect().height : 0;\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\n ? (infoType.endIndex - this.parent.virtualItemCount > 0\n ? infoType.endIndex - this.parent.virtualItemCount\n : 0)\n : 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) || (Math.ceil(exactTopIndex) > this.parent.previousStartIndex)) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex || (Math.ceil(exactTopIndex) > this.parent.previousStartIndex)) {\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 && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex !== pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = 'translate(0px,' + top + 'px)';\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"disabled\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group',\n virtualList: 'e-list-item e-virtual-list'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.isVirtualReorder = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.isDynamicData = false;\n _this.isPrimitiveData = false;\n _this.isCustomFiltering = false;\n _this.debounceTimer = null;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n if (!isNullOrUndefined(this.listData)) {\n var dataSource = this.listData;\n var fields_1 = 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_1.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields_1.text, item).toString(), text)) {\n value = getValue(fields_1.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_1.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) &&\n itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields_1.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields_1.text, item), text)) {\n value = getValue(fields_1.value, item);\n }\n });\n }\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if ((!isNullOrUndefined(this.noRecordsTemplate) && this.noRecordsTemplate !== 'No records found') || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || ((noDataElement[i] instanceof Text) && (noDataElement[i]).textContent !== '')) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount < this.itemCount * 2 && ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2)) && ((!(this.dataSource instanceof DataManager)) || ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount)))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 && this.listItemHeight > 0 ?\n Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ?\n this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return 'height: 0px;';\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = ((this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0) ||\n this.skeletonCount === 0) ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = (this.listItemHeight - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10)) + '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 if (isContainSkeleton.firstChild) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n if (this.getModuleName() === 'multiselect') {\n for (var i = 0; i < totalSkeletonCount && this.totalItemCount !== this.viewPortInfo.endIndex; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList + \" e-virtual-list-end\", styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = (this.listItemHeight - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10)) + 'px';\n }\n var skeleton = new Skeleton({\n shape: 'Text',\n height: '10px',\n width: '95%',\n cssClass: 'e-skeleton-text-end'\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n if (isContainSkeleton.firstChild) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.appendChild(liElement);\n }\n }\n if (this.totalItemCount === this.viewPortInfo.endIndex) {\n isContainSkeleton.querySelectorAll('.e-virtual-list-end').forEach(function (el) { return el.remove(); });\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 &&\n this.properties.value &&\n this.properties.value instanceof Array &&\n 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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var group = element.querySelectorAll('select>optgroup');\n var fields;\n var isSelectGroupCheck = this.getModuleName() === 'multiselect' && this.isGroupChecking && group.length > 0;\n fields = isSelectGroupCheck ? { value: 'value', text: 'text', groupBy: 'categeory' } : fields = { value: 'value', text: 'text' };\n var jsonElement = [];\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 if (isSelectGroupCheck) {\n this.getJSONfromOption(jsonElement, child, fields, item.label);\n }\n else {\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, isSelectGroupCheck ? fields.groupBy : this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss, this.fields.disabled);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss, disabled) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss,\n disabled: !isNullOrUndefined(disabled) ? disabled : this.fields && this.fields.disabled\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields, category) {\n if (category === void 0) { category = null; }\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 if (!isNullOrUndefined(category)) {\n json[fields.groupBy] = category;\n }\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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} event - Specifies the event which is the reason for the invocation of this method.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count !== 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal') && !_this.isCustomFiltering) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n _this.isCustomFiltering = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) ||\n (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n var isSetCurrentcall = false;\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n isSetCurrentcall = true;\n _this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n var preventSkeleton = _this.getModuleName() !== 'multiselect' || (_this.getModuleName() === 'multiselect' && (!(_this.dataSource instanceof DataManager) || (_this.dataSource instanceof DataManager && !isSetCurrentcall)));\n if (_this.isVirtualizationEnabled && preventSkeleton) {\n _this.getFilteringSkeletonCount();\n _this.updatePopupPosition();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled &&\n _this.virtualGroupDataSource\n && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) :\n new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count !== 0 &&\n listItems.count < (_this.itemCount * 2)) && !_this.appendUncheckList) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal') && !_this.isCustomFiltering) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) &&\n !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) &&\n !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length :\n listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n _this.isCustomFiltering = false;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupPosition = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return Object.prototype.hasOwnProperty.call(item, key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n var _this = this;\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML === '') {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (this.getModuleName() === 'multiselect' && this.isAngular && this.ngEle) {\n var popupHolder = this.list;\n if (popupHolder) {\n var prevHeight = popupHolder.offsetHeight + 'px';\n popupHolder.style.height = prevHeight;\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 if (this.getModuleName() === 'multiselect' && this.isAngular && this.ngEle) {\n var popupHolder_1 = this.list;\n if (popupHolder_1) {\n setTimeout(function () {\n popupHolder_1.style.height = '';\n _this.refreshPopup();\n }, 0);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n if (this.fields.disabled) {\n var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);\n var data = this.sortOrder !== 'None' ? !isNullOrUndefined(this.fields.groupBy) ?\n this.sortedData.filter(function (item) { return !('isHeader' in item) || item.isHeader !== true; }) : this.sortedData : this.listData;\n for (var index = 0; index < liCollections.length; index++) {\n if (JSON.parse(JSON.stringify(data[index]))[this.fields.disabled]) {\n if (!isNullOrUndefined(this.fields.groupBy)) {\n var item = data[index];\n var value = getValue((this.fields.value ? this.fields.value : 'value'), item);\n var li = listElement.querySelector('li[data-value=\"' + value + '\"]');\n if (!isNullOrUndefined(li)) {\n this.disableListItem(li);\n }\n }\n else {\n this.disableListItem(liCollections[index]);\n }\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n if (this.isVirtualizationEnabled && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n focusItem = elements && elements.length > 0 ? elements[2] : focusItem;\n }\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\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.performFiltering = function (e) {\n // this is for component wise\n };\n DropDownBase.prototype.debouncedFiltering = function (e, debounceDelay) {\n var _this = this;\n if (this.debounceTimer !== null) {\n clearTimeout(this.debounceTimer);\n }\n this.debounceTimer = setTimeout(function () {\n _this.performFiltering(e);\n }, debounceDelay);\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var fieldSet = fields.properties ||\n fields;\n dataSource = ListBase.groupDataSource(dataSource, fieldSet, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else if (this.getModuleName() !== 'listbox' || (this.getModuleName() === 'listbox' && !this.preventDefActionFilter)) {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var computedHeight = getComputedStyle(this.getValidLi(), null).getPropertyValue('height');\n var computedMarginValue = getComputedStyle(this.getValidLi(), null).getPropertyValue('margin-bottom');\n var marginValue = parseInt(computedMarginValue, 10);\n var liHeight = this.getModuleName() === 'multiselect' ? parseFloat(computedHeight) : parseInt(computedHeight, 10);\n var topIndex = Math.round(target.scrollTop / (liHeight + marginValue));\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n if (this.list) {\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 else {\n return 0;\n }\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) &&\n liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.\n * @param {boolean} isClearAll - Specifies whether the current action is clearAll.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate, isClearAll) {\n var ulElement;\n if (this.itemTemplate && listData) {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\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 if (this.getModuleName() !== 'listbox' || (this.getModuleName() === 'listbox' && !this.preventDefActionFilter)) {\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.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 if (this.getModuleName() === 'multiselect' && this.isCheckBoxSelection && this.appendUncheckList && this.list && this.list.querySelector('.e-active')) {\n virtualUlElement.appendChild(ulElement);\n isCheckBoxUpdate = true;\n }\n else {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if (!virtualUlElement) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && (this.virtualSelectAll && !isClearAll)) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if ((!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) || (oldUlElement && this.isVirtualReorder && this.list.querySelector('.e-list-parent' + '.e-reorder'))) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (this.getModuleName() !== 'multiselect' || (this.getModuleName() === 'multiselect' && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && !this.setCurrentView)))) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content'\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n var ulElement;\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n ulElement = ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n else {\n ulElement = ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\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 if (!isNullOrUndefined(firstLi)) {\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = [];\n if (this.fields.disabled && this.getModuleName() === 'multiselect' && this.liCollections) {\n listItems = this.liCollections;\n }\n else {\n listItems = this.getItems();\n }\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @param {HTMLElement} ulElement - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.isPrimitiveData = true;\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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\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) &&\n isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n this.isPrimitiveData = 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 if (this.getModuleName() === 'listbox') {\n if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {\n this.updateDataSource(updateData, oldProp);\n }\n }\n else {\n this.isDynamicData = true;\n this.updateDataSource(updateData, oldProp);\n }\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 {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\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 var elements = this.getScrollableParent();\n for (var i = 0; i < elements.length; i++) {\n var ele = elements[i];\n EventHandler.add(ele, 'scroll', this.updateGroupFixedHeader, this);\n }\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.getScrollableParent = function () {\n var eleStyle = getComputedStyle(this.element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = this.element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n scrollParents.push(document);\n return scrollParents;\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ?\n this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index + i);\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.\n insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n if (itemIndex && this.getModuleName() === 'listbox') {\n this.ulElement.insertBefore(liCollections[i], this.ulElement.childNodes[itemIndex + i]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n /**\n * Checks if the given HTML element is disabled.\n *\n * @param {HTMLElement} li - The HTML element to check.\n * @returns {boolean} - Returns true if the element is disabled, otherwise false.\n */\n DropDownBase.prototype.isDisabledElement = function (li) {\n if (li && li.classList.contains('e-disabled')) {\n return true;\n }\n return false;\n };\n /**\n * Checks whether the list item at the specified index is disabled.\n *\n * @param {number} index - The index of the list item to check.\n * @returns {boolean} True if the list item is disabled, false otherwise.\n */\n DropDownBase.prototype.isDisabledItemByIndex = function (index) {\n if (this.fields.disabled && this.liCollections) {\n return this.isDisabledElement(this.liCollections[index]);\n }\n return false;\n };\n /**\n * Disables the given list item.\n *\n * @param { HTMLLIElement } li - The list item to disable.\n * @returns {void}\n */\n DropDownBase.prototype.disableListItem = function (li) {\n li.classList.add('e-disabled');\n li.setAttribute('aria-disabled', 'true');\n li.setAttribute('aria-selected', 'false');\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n resizeIcon: 'e-resizer-right e-icons',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isTouched = false;\n _this.isFocused = false;\n _this.autoFill = false;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n _this.isReactTemplateUpdate = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.fields.disabled ? this.ulElement.querySelector('.' + dropDownListClasses.li + ':not(.e-disabled)') : this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) ||\n (this.allowObjectBinding && this.previousValue &&\n this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :\n dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n this.checkAndResetCache();\n if (this.enableVirtualization && this.list) {\n this.updateInitialData();\n }\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\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' && this.element.getAttribute('placeholder') !== this.htmlAttributes[\"\" + htmlAttr]) {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else if (htmlAttr !== 'placeholder') {\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 if (!isNullOrUndefined(this.inputElement) && !isNullOrUndefined(this.inputElement.parentElement)) {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'false');\n this.inputWrapper.container.removeAttribute('disabled');\n }\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'true');\n this.inputWrapper.container.setAttribute('disabled', '');\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n /**\n * Checks if the given value is disabled.\n *\n * @param { string | number | boolean | object } value - The value to check for disablement. Can be a string, number, boolean, or object.\n * @returns { boolean } A boolean indicating whether the value is disabled.\n */\n DropDownList.prototype.isDisableItemValue = function (value) {\n if (typeof (value) === 'object') {\n var objectValue = JSON.parse(JSON.stringify(value))[this.fields.value];\n return this.isDisabledItemByIndex(this.getIndexByValue(objectValue));\n }\n return this.isDisabledItemByIndex(this.getIndexByValue(value));\n };\n DropDownList.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n this.isFocused = false;\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n this.isFocused = true;\n };\n DropDownList.prototype.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n DropDownList.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), 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.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Store the initial dimensions of the popup\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n // Wire up events for resizing\n this.resizingWireEvent();\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n if (this.list && this.list.parentElement) {\n // Minimum width and height (100px)\n var minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth = minWidth || 100;\n minHeight = minHeight || 120;\n // Ensure the new width and height are not less than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n // Unwire the resize event listeners\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString === '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() === this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) ||\n 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 :\n 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 ?\n 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')) &&\n 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 ?\n 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 ?\n this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ?\n 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 ?\n this.selectedLI.offsetTop +\n (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop -\n (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = void 0;\n if (this.fields.disabled) {\n var enableLiCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.e-disabled)');\n li = incrementalSearch(e.charCode, enableLiCollections, this.activeIndex, true, this.element.id);\n }\n else {\n li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n }\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n var filterIndex = this.getIndexByValue(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop +\n (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 ?\n this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop -\n (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] &&\n this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) :\n this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 && this.fields.groupBy ?\n this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) <\n (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount :\n this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value = this.liCollections[0].getAttribute('data-value') !== 'null' ?\n this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\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 ?\n this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== 'null' ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownListClasses.focus)\n || this.liCollections[index].classList.contains(dropDownListClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n if (this.getModuleName() !== 'autocomplete') {\n if (this.liCollections.length - 1 === itemIndex && e.action === 'down') {\n e.action = 'up';\n }\n if (itemIndex === 0 && e.action === 'up') {\n e.action = 'down';\n }\n }\n this.updateUpDownAction(e);\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ?\n this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 :\n this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ?\n this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() :\n this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ?\n (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {\n var validIndex = steps >= 0 ? steps + 1 : 0;\n while (validIndex < this.liCollections.length) {\n previousItem = this.liCollections[validIndex];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n validIndex--;\n if (validIndex < 0) {\n return;\n }\n }\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ?\n this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' &&\n !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' &&\n !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 && previousItem && previousItem.classList.contains('e-disabled')) {\n while (steps >= 0 && steps < this.liCollections.length) {\n previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n steps++;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = ((this.dataSource instanceof DataManager) && this.groupTemplate) ? 700 :\n (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n proxy_1.isSecondClick = proxy_1.isReact && proxy_1.isFiltering() && proxy_1.dataSource instanceof DataManager && !proxy_1.list.querySelector('ul') ? false : true;\n }, duration);\n }\n }\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 ?\n 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' &&\n !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n this.isTouched = !isNullOrUndefined(e);\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding &&\n (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom &&\n this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ?\n this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = !this.isPrimitiveData ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ?\n this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) ||\n (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ?\n this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) ||\n (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n if (isNullOrUndefined(li)) {\n this.previousValue = this.value;\n }\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\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 * @param {boolean} isCustomValue - Specifies whether the value is custom value or not.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ?\n this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n var option = document.createElement('option');\n option.text = this.text;\n option.setAttribute('selected', '');\n this.hiddenElement.appendChild(option);\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.filterArgs = e;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n if (!this.getInitialData) {\n this.searchLists(e);\n }\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ?\n this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex !== 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ?\n filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ?\n this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n alreadySkipAdded = false;\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ?\n queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.performFiltering = function (e) {\n var _this = this;\n this.checkAndResetCache();\n this.isRequesting = false;\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.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n DropDownList.prototype.searchLists = function (e) {\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 if (this.typedString !== '' && this.debounceDelay > 0) {\n this.debouncedFiltering(e, this.debounceDelay);\n }\n else {\n this.performFiltering(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 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 this.getInitialData) ? false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualContentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualContentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n if (this.filterInput && this.filterInput.value === '' && this.getModuleName() === 'combobox') {\n this.executeCloneElements();\n }\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\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 && this.isDeviceFullScreen) {\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 if (!isNullOrUndefined(e) && !isNullOrUndefined(e.data) && e.data.length > 1 && this.autoFill && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.inputElement.value = e.data;\n }\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n if (_this.getModuleName() === 'combobox' && _this.isFiltering() && isNullOrUndefined(_this.list)) {\n _this.renderList();\n }\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n if (this.enableVirtualization) {\n this.updateSelectElementData(this.allowFiltering);\n }\n this.getInitialData = false;\n this.isReactTemplateUpdate = true;\n this.searchLists(this.filterArgs);\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_1 : x[checkField_1] === value_1;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_1 : x[checkField_1] === value_1;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_1)))\n .then(function (e) {\n if (e.result.length > 0) {\n if (!_this.enableVirtualization) {\n _this.addItem(e.result, list.length);\n }\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.isReact) && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n if (this.isDynamicData) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n this.selectedLI = this.getElementByValue(currentValue);\n this.isDynamicData = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) &&\n 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))) &&\n !this.enableVirtualization) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var isValidAddition = !isNullOrUndefined(this.value) && selectedItem && selectedItem.getAttribute('data-value') === value.toString();\n if (isValidAddition) {\n this.addNewItem(list, selectedItem);\n }\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\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_2 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_2) ||\n (getValue(_this.fields.value, data) === value_2));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ?\n this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n var initialPopupHeight;\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ?\n formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n _this.isUpdateHeaderHeight = _this.header.offsetHeight !== 0;\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n _this.isUpdateFooterHeight = _this.footer.offsetHeight !== 0;\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n initialPopupHeight = popupEle.clientHeight;\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) +\n parseInt(window.getComputedStyle(listitems[0]).marginBottom, 10) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) && ((!(_this.dataSource instanceof DataManager)) ||\n ((_this.dataSource instanceof DataManager) && (_this.totalItemCount <= _this.itemCount))) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = _this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = _this.getTransformValues();\n _this.list.appendChild(virtualContentElement).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = _this.createElement('div', {\n id: _this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = _this.GetVirtualTrackHeight();\n popupEle.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\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) &&\n _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) -\n (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) -\n (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && _this.isDeviceFullScreen && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) &&\n !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout() && _this.isDeviceFullScreen) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (_this.isReact && _this.isFiltering() && _this.dataSource instanceof DataManager && _this.list.querySelector('ul') && !_this.isSecondClick) {\n _this.executeCloneElements();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto' && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n if (_this.allowResize && (_this.getModuleName() !== 'dropdownlist' || !(Browser.isDevice && _this.isDeviceFullScreen && _this.allowFiltering))) {\n var resizePaddingBottom = 16;\n // Create the resizer div\n _this.resizer = _this.createElement('div', {\n id: _this.element.id + '_resize-popup',\n className: dropDownListClasses.resizeIcon // Adding class for styling\n });\n // Add the resizer div to the popup\n if (_this.list && _this.list.parentElement) {\n _this.list.parentElement.classList.add('e-resize');\n if (_this.popupHeight.toString().toLowerCase() !== 'auto' && initialPopupHeight >= (parseInt(_this.popupHeight.toString(), 10) - 2)) {\n _this.list.parentElement.style.height = '100%';\n }\n _this.list.parentElement.style.paddingBottom = (_this.getModuleName() === 'dropdownlist' && _this.allowFiltering && _this.searchBoxHeight) ? (_this.searchBoxHeight + resizePaddingBottom).toString() + 'px' : resizePaddingBottom.toString() + 'px';\n if (_this.header || _this.footer || _this.itemTemplate) {\n _this.list.parentElement.style.paddingBottom = ((parseInt(_this.list.parentElement.style.maxHeight, 10) - parseInt(_this.list.style.maxHeight, 10)) + resizePaddingBottom).toString() + 'px';\n }\n _this.list.parentElement.appendChild(_this.resizer);\n //hold the popup resize\n _this.list.parentElement.style.width = _this.resizeWidth + \"px\";\n _this.list.parentElement.style.height = _this.resizeHeight + \"px\";\n _this.list.parentElement.style.maxHeight = _this.resizeHeight + \"px\";\n _this.list.style.maxHeight = _this.resizeHeight + \"px\";\n }\n // Attach mouse and touch events to the resizer\n EventHandler.add(_this.resizer, 'mousedown', _this.startResizing, _this);\n EventHandler.add(_this.resizer, 'touchstart', _this.startResizing, _this);\n }\n }\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.length > 0) {\n _this.isActive = true;\n if (_this.isReactTemplateUpdate && _this.isReact && _this.itemTemplate && !_this.enableVirtualization) {\n _this.actionCompleteData.ulElement = _this.renderItems(_this.actionCompleteData.list, _this.fields);\n _this.isReactTemplateUpdate = false;\n }\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n else if (_this.enableVirtualization) {\n _this.focusIndexItem();\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight &&\n elementRect.right <= window.innerWidth);\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight + parseInt(window.getComputedStyle(firstItem).marginBottom, 10);\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (width.indexOf('px') > -1) && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI &&\n !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ?\n this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight +\n selectedListMargin)) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 :\n nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - 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 &&\n currentElementValue === lastElementValue && keyAction !== 'end' && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageDown' ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction === 'end') {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction === 'pageDown' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +\n (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction === 'down')) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI &&\n !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight +\n selectedListMargin)) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight +\n selectedListMargin)) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ?\n 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 + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction === 'pageUp' ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageUp' ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue &&\n currentElementValue === firstElementValue && keyAction !== 'home' && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction === 'home') {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction === 'pageUp' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action === 'up' || e.action === 'pageUp' || e.action === 'open';\n this.scrollTop(e.action);\n break;\n }\n }\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 ?\n 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) &&\n !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout() && this.isDeviceFullScreen) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { '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 ?\n this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' &&\n !isNullOrUndefined(this.typedString) && this.typedString !== '') || (this.getModuleName() === 'combobox' &&\n 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 (_this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: _this.filterInput,\n floatLabelType: _this.floatLabelType,\n properties: { placeholder: _this.filterBarPlaceholder },\n buttons: _this.clearIconElement\n }, _this.clearIconElement);\n }\n _this.filterInputObj = null;\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ?\n 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 this.customFilterQuery = null;\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n if (isNullOrUndefined(currentData)) {\n return;\n }\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = '';\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n if (this.resizer) {\n EventHandler.remove(this.resizer, 'mousedown', this.startResizing);\n EventHandler.remove(this.resizer, 'touchstart', this.startResizing);\n }\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\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')) &&\n 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: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': dropDownListClasses.hiddenElement\n }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) &&\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n }\n else if (this.getModuleName() === 'dropdownlist') {\n if (!this.targetElement().hasAttribute('aria-label')) {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) :\n 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 ?\n 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 parseInt(window.getComputedStyle(item).marginBottom, 10);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\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 if (this.list && !(this.isReact)) {\n this.list.innerHTML = '';\n }\n else {\n this.list = null;\n }\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) ||\n ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) &&\n !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n var index = isNullOrUndefined(value) ? null : this.index;\n if ((isNullOrUndefined(index) && (currentValue === value)) || this.isAngular) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n else {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'index': index, 'value': value });\n }\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) &&\n isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (this_1.fields.disabled) {\n newProp.text = newProp.text && !this_1.isDisabledItemByIndex(this_1.getIndexByValue(this_1.getValueByText(newProp.text)))\n ? newProp.text : null;\n }\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (this_1.fields.disabled) {\n newProp.value = newProp.value != null && !this_1.isDisableItemValue(newProp.value) ? newProp.value : null;\n }\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) &&\n this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?\n getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_3 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?\n getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_3)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (this_1.fields.disabled) {\n newProp.index = newProp.index != null && !this_1.isDisabledItemByIndex(newProp.index) ? newProp.index : null;\n }\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) &&\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ?\n getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\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.getModuleName() === 'dropdownlist' && this.beforePopupOpen && !this.isPopupOpen) {\n this.beforePopupOpen = false;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null &&\n this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n };\n DropDownList.prototype.executeCloneElements = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n setTimeout(function () {\n proxy.cloneElements();\n proxy.isSecondClick = proxy.isReact && proxy.isFiltering() && proxy.dataSource instanceof DataManager && !proxy.list.querySelector('ul') ? false : true;\n }, duration);\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n if (li.classList.contains(dropDownListClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(dropDownListClasses.selected)) {\n this.clear();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.removeAttribute('tabindex');\n this.element.style.display = 'block';\n if (this.inputWrapper.container && this.inputWrapper.container.parentElement) {\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n }\n delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0]\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\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(300)\n ], DropDownList.prototype, \"debounceDelay\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"isDeviceFullScreen\", 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(false)\n ], DropDownList.prototype, \"allowResize\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"resizeStart\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(true)\n ], TreeSettings.prototype, \"checkDisabledChildren\", 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 _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n _this.documentClickContext = _this.onDocumentClick.bind(_this);\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n if (!isNOU(this.element.id)) {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id + '_textbox' } });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n }\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.setOldValue();\n if (!this.isRemoteData) {\n this.isInitialized = true;\n }\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate || this.valueTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n this.keyboardModule = new KeyboardEvents(this.filterObj.element, {\n keyAction: this.filterKeyAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.filterKeyAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n addClass([_this.inputWrapper], [INPUTFOCUS]);\n break;\n case 'moveDown':\n e.preventDefault();\n _this.filterObj.element.blur();\n focusedElement = _this.treeObj.element.querySelector('li');\n if (focusedElement) {\n focusedElement.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n _this.treeObj.element.classList.remove('e-filtering');\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n _this.treeObj.element.classList.add('e-filtering');\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n }\n else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n _this.treeObj.element.classList.add('e-filtering');\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n }\n else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.popupObj) {\n _this.popupObj.refreshPosition();\n }\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNOU(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node, isChild, isChildFiltering)) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n }\n else {\n filteredItems.child = null;\n filteredItems = (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n var filteredChild = this.nestedChildFilter(value, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.nestedChildFilter(value, children[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n var matchedData = [];\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n var parentId = matchedData[parseInt(i.toString(), 10)][this.fields.parentValue];\n while (!isNOU(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n var value_1 = this.treeData[parseInt(j.toString(), 10)][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue && !isNOU(this.fields.child.text)) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n if (Browser.isIos) {\n EventHandler.add(this.inputWrapper, 'touchstart', this.handleIosTouch, this);\n }\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 if (Browser.isIos) {\n EventHandler.remove(this.inputWrapper, 'touchstart', this.handleIosTouch);\n }\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n this.keyboardModule.destroy();\n if (this.showSelectAll && this.checkAllParent) {\n EventHandler.remove(this.checkAllParent, 'mouseup', this.clickHandler);\n }\n document.removeEventListener('mousedown', this.documentClickContext);\n };\n /* Handles touch events specifically for iOS devices */\n DropDownTree.prototype.handleIosTouch = function (e) {\n e.preventDefault();\n this.dropDownClick(e);\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 (isValue && this.mode !== 'Custom') {\n this.showOrHideValueTemplate(true);\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.setOldValue();\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 }\n this.ensurePlaceHolder();\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.setOldValue();\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 this.showOrHideValueTemplate(false, true);\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 this.showOrHideValueTemplate(true);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n 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 case 'tab':\n if (!_this.isPopupOpen && _this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n e.preventDefault();\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]') || _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n break;\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n if (this.valueTemplate) {\n remaining = this.updateChipAndValueTemplate(false, downIconWidth, remainSize);\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n this.updateDelimMode();\n return;\n }\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 remaining = this.updateChipAndValueTemplate(true, downIconWidth, remainSize);\n }\n }\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.checkRemainingTemplate = function (remaining, remainElement, remainContent, totalContent) {\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 DropDownTree.prototype.updateChipAndValueTemplate = function (isChip, downIconWidth, remainSize) {\n if (downIconWidth === void 0) { downIconWidth = 0; }\n var currentHtmlContent = '';\n var overAllContainer;\n var previousHtmlContent;\n var previousData;\n var index = 1;\n var wrapperLength;\n var remainingItemsCount;\n addClass([isChip ? this.chipWrapper : this.valueTemplateContainer], HIDEICON);\n var clonedElement = (isChip ? this.chipWrapper :\n this.valueTemplateContainer).cloneNode(true);\n var valueElements = isChip ? selectAll('.' + CHIP, clonedElement) : Array.prototype.slice.call(clonedElement.children);\n for (var i = 0; i < valueElements.length; i++) {\n previousHtmlContent = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(valueElements[i]);\n currentHtmlContent = this.overFlowWrapper.innerHTML;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperLength + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (previousData !== undefined && previousData !== '') {\n previousHtmlContent = previousData;\n i = index + 1;\n }\n this.overFlowWrapper.innerHTML = previousHtmlContent;\n remainingItemsCount = this.value.length - i;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n while (((wrapperLength + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperLength !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remainingItemsCount++;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperLength + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n previousData = currentHtmlContent;\n index = i;\n }\n else if (i === 0) {\n previousData = '';\n index = -1;\n }\n }\n return remainingItemsCount;\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' || this.valueTemplateContainer)) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n var selectedData = this.getSelectedData(this.value[parseInt(index.toString(), 10)]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '', 'aria-label': this.getModuleName() }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT, 'aria-label': this.getModuleName() }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.setOldValue();\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', this.inputWrapper.classList.contains('e-disabled') ? '-1' : '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.style.cssText = this.htmlAttributes[\"\" + htmlAttr];\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = this.value.length - 1; i >= 0; i--) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(i, 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.setOldValue();\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.setOldValue();\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 && !(this.value.length === 0)) {\n return;\n }\n if (!this.isInitialized) {\n this.setOldValue();\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.setValueTemplate = function () {\n var _this = this;\n if (this.valueTemplate) {\n var compiledString = this.initializeValueTemplate();\n this.getValueTemplateElement(this.value[0], compiledString);\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n this.showOrHideValueTemplate(true);\n }\n };\n DropDownTree.prototype.getValueTemplateElement = function (value, compiledString) {\n var selectedData = this.getNodeData(value, this.isFilteredData ? this.treeData : this.treeItems);\n var templateElements = compiledString(selectedData, this, 'valueTemplate', this.element.id + \"valueTemplate\", this.isStringTemplate, undefined, this.valueTemplateContainer);\n if (templateElements) {\n templateElements = Array.prototype.slice.call(templateElements);\n append(templateElements, this.valueTemplateContainer);\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 this.setValueTemplate();\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n if (this.fields.dataSource instanceof DataManager) {\n this.updateSelectedValues();\n }\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.length !== this.treeObj.checkedNodes.length || this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n }).length > 0;\n if (difference || 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 (!isNOU(this.value) && this.value.length > 0 && !isNOU(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n var text = getValue(this.fields.text, this.treeItems[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n var dataId = getValue(this.fields.text, data[parseInt(i.toString(), 10)]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n var childData = getValue(field.child, data[parseInt(i.toString(), 10)]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n newData = this.getNestedItems(getValue(child, data[parseInt(i.toString(), 10)]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate,\n checkDisabledChildren: this.treeSettings.checkDisabledChildren,\n checkOnClick: true\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.treeObj.element.classList.remove('e-filtering');\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n }\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showSelectAll || _this.allowFiltering) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.value != null && _this.text != null ? _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[_this.value.length - 1] + '\"]') : null;\n if (focusedElement) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement.setAttribute('tabindex', '0');\n }\n else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]:not(.e-disable)') ||\n _this.treeObj.element.querySelector('li:not(.e-disable)');\n _this.removeFocus(focusedElement, oldFocussedNode);\n }\n _this.updateFocus(focusedElement);\n }\n if (_this.treeObj.checkedNodes.length > 0 && !_this.isFilterRestore) {\n var nodes = _this.treeObj.element.querySelectorAll('li:not(.e-disable)');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if ((checkedNodes.length === nodes.length) && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.showSelectAll && !_this.allowFiltering) {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n var focusedElement = _this.popupEle.querySelector('.e-selectall-parent');\n _this.removeFocus(focusedElement, oldFocussedNode);\n _this.updateFocus(focusedElement);\n }\n if (_this.allowFiltering) {\n var focusedElement = _this.treeObj.element.querySelector('li.e-node-focus');\n if (!isNOU(focusedElement)) {\n removeClass([focusedElement], 'e-node-focus');\n }\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.removeFocus = function (focusedElement, oldFocusedElement) {\n if (oldFocusedElement && oldFocusedElement !== focusedElement) {\n oldFocusedElement.setAttribute('tabindex', '-1');\n removeClass([oldFocusedElement], 'e-node-focus');\n }\n };\n DropDownTree.prototype.updateFocus = function (focusedElement) {\n if (!isNOU(focusedElement)) {\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n };\n DropDownTree.prototype.reactCallBack = function () {\n if (!isNOU(this.popupObj)) {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\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 document.addEventListener('mousedown', _this.documentClickContext);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNOU(this.inputWrapper) &&\n this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n if (!this.isFilteredData) {\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n }\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n this.isInitialized = true;\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 if (!this.showSelectAll) {\n this.isFilterRestore = false;\n }\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource)) {\n this.fields.dataSource = [];\n }\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) ||\n !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.setProperties({ value: this.oldValue }, true);\n this.treeObj.dataBind();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.setOldValue();\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 eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n this.setValueTemplate();\n if (!isNOU(this.value) && this.value.length > 0) {\n this.inputWrapper.setAttribute('aria-label', args.nodeData.text.toString());\n }\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.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 || (!this.isFilteredData && args.action === 'check' && this.isFromFilterChange)) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li:not(.e-disable)');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if ((wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 ||\n (!isNOU(args.data[0]) && args.data[0].isChecked === 'false'))) || !args.isInteracted && this.isFilterRestore) {\n this.isFilterRestore = false;\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check'\n && checkedNodes.length === nodes.length\n && (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 if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.setOldValue();\n }\n };\n DropDownTree.prototype.onNodeExpanded = function () {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\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 this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value !== null && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(true);\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 var _this = this;\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.ddtCompareValues(this.treeObj.selectedNodes, this.value.slice())) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n selectedValues = selectedValues.filter(function (selectedValue) {\n var nodeData = _this.treeObj.getTreeData(selectedValue);\n if (Array.isArray(nodeData)) {\n return nodeData.every(function (nodeSelectedData) { return nodeSelectedData.selected; });\n }\n return true;\n });\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 this.showOrHideValueTemplate(false, true);\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 this.showOrHideValueTemplate(true);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value, this.treeItems);\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, dataSource) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = dataSource.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, dataSource[i]);\n if (!isNOU(dataSource[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return dataSource[i];\n }\n }\n }\n else {\n return this.getChildNodeData(dataSource, 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.initializeValueTemplate = function () {\n if (!this.valueTemplate) {\n return null;\n }\n if (this.valueTemplateContainer) {\n while (this.valueTemplateContainer.firstChild) {\n this.valueTemplateContainer.removeChild(this.valueTemplateContainer.firstChild);\n }\n }\n else {\n this.valueTemplateContainer = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + SHOW_TEXT + ' ' + 'e-input-value' + ' ' + HIDEICON });\n }\n this.inputWrapper.insertBefore(this.valueTemplateContainer, this.inputEle);\n return this.templateComplier(this.valueTemplate);\n };\n DropDownTree.prototype.showOrHideValueTemplate = function (show, showChip) {\n if (showChip === void 0) { showChip = false; }\n if (!this.valueTemplateContainer || this.mode === 'Box') {\n return;\n }\n if (show) {\n removeClass([this.valueTemplateContainer], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.valueTemplateContainer], HIDEICON);\n if (!showChip) {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n var _this = this;\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n var compiledString = this.initializeValueTemplate();\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 if (this.valueTemplate) {\n this.getValueTemplateElement(this.value[i], compiledString);\n }\n }\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n 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 this.showOrHideValueTemplate(true);\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 if (!isNOU(this.value) && this.value.length > 0 && !isNOU(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n else {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\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, 'mouseup', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null || this.value.length === 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\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 this.showOrHideValueTemplate(false, true);\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 if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (e.target.classList.contains('e-chips-close') && !this.isPopupOpen) {\n e.stopPropagation();\n e.preventDefault();\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (Array.isArray(this.value) && this.value.length === 0 && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.setOldValue();\n this.setProperties({ value: [] }, true);\n this.showOrHideValueTemplate(false);\n }\n if (isNOU(this.value) || this.value.length === 0) {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\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.setOldValue = function () {\n this.oldValue = Array.isArray(this.value) ? this.value.slice() : this.value;\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n if (prop === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (prop === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (prop === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n else if (prop === 'checkDisabledChildren') {\n this.treeObj.checkDisabledChildren = this.treeSettings.checkDisabledChildren;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n this.portals = [];\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n if (this.treeObj) {\n this.treeObj.element.removeAttribute('aria-activedescendant');\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.e-overflow:not(.e-input-value)', 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 if (JSON.stringify(oldProp.value) !== JSON.stringify(newProp.value)) {\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n }\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 for (var _b = 0, _c = Object.keys(newProp.treeSettings); _b < _c.length; _b++) {\n var prop_1 = _c[_b];\n this.updateTreeSettings(prop_1);\n }\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n Input.setRipple(false, [this.inputObj]);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection || (this.value && this.valueTemplateContainer)) {\n this.element.classList.remove(CHIP_INPUT);\n }\n detach(this.inputObj.container);\n if (this.inputObj.buttons.length) {\n detach(this.inputObj.buttons[0]);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n if (this.chipCollection) {\n var chipsIcons = selectAll('.e-chips-close', this.chipCollection);\n for (var _i = 0, chipsIcons_1 = chipsIcons; _i < chipsIcons_1.length; _i++) {\n var element = chipsIcons_1[_i];\n EventHandler.remove(element, 'mouseup', this.removeChip);\n }\n }\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'footerTemplate', 'itemTemplate', 'actionFailureTemplate',\n 'noRecordsTemplate']);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj, cancel: false };\n this.trigger('close', eventArgs);\n if (eventArgs.cancel) {\n return;\n }\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n if (this.isFilteredData) {\n this.treeObj['treeData'] = this.treeData;\n }\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property('${value.length} item(s) selected')\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"valueTemplate\", 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';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * <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 var text = !isNullOrUndefined(this.text) ? this.text.replace(/\\r\\n|\\n|\\r/g, '') : this.text;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== 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.selectedLI = this.getElementByValue(this.value);\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n var changeData = {};\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n if (isNullOrUndefined(value)) {\n var fields_1 = this.fields;\n var isvalidTextField_1 = false;\n var isValidValue_1 = false;\n if (this.allowObjectBinding) {\n var keys = Object.keys(this.value);\n keys.forEach(function (key) {\n if (key === fields_1.value) {\n isValidValue_1 = true;\n return;\n }\n });\n keys.forEach(function (key) {\n if (key === fields_1.text) {\n isvalidTextField_1 = true;\n return;\n }\n });\n }\n changeData = {\n text: isValidValue_1 ? isvalidTextField_1 ? getValue(fields_1.text, this.value) : getValue(fields_1.value, this.value) : null,\n value: isValidValue_1 ? this.value : null,\n index: null\n };\n }\n }\n if (this.allowObjectBinding) {\n this.setProperties(changeData, true);\n }\n else {\n this.setProperties({ value: value, text: value ? value.toString() : value, index: null }, true);\n }\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) ||\n (this.allowObjectBinding && this.previousValue && this.value &&\n !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n var _this = this;\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(new Predicate(fields, 'equal', currentValue_1)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.itemData = e.result[0];\n var dataItem = _this.getItemData();\n var value = _this.allowObjectBinding ?\n _this.getDataByValue(dataItem.value) : dataItem.value;\n if ((_this.value === dataItem.value && _this.text !== dataItem.text) ||\n (_this.value !== dataItem.value && _this.text === dataItem.text)) {\n _this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n }\n else {\n _this.valueMuteChange(null);\n }\n });\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding\n ? this.getDataByValue(dataItem.value)\n : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text)\n || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n if (isNullOrUndefined(li)) {\n this.previousValue = this.value;\n }\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) ||\n (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !(this.dataSource instanceof DataManager)\n && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly ? this.readonly.toString() : 'false',\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, this.ignoreAccent);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n var isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&\n this.incrementalEndIndex <= this.totalItemCount;\n var isIncrementalEndIndexZero = this.incrementalEndIndex === 0;\n if (isEndIndexValid || isIncrementalEndIndexZero) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (isIncrementalEndIndexZero) {\n this.incrementalEndIndex = Math.min(100, this.totalItemCount);\n }\n else {\n this.incrementalEndIndex = Math.min(this.incrementalEndIndex + 100, this.totalItemCount);\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount\n ? this.totalItemCount\n : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0\n ? activeItem.index - ((this.itemCount / 2) - 2)\n : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var startIndex_1 = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount\n ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2)\n : this.totalItemCount;\n var endIndex_1 = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex_1, endIndex_1);\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 var dataItem_1 = this.getItemData();\n if ((!isNullOrUndefined(activeElement) && !this.enableVirtualization) || (this.enableVirtualization &&\n this.isTyped && isNullOrUndefined(dataItem_1) && isNullOrUndefined(dataItem_1.value) &&\n dataItem_1.value.toString() === activeElement.getAttribute('data-value').toString())) {\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 var virtualContent = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n virtualContent.style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = activeElement.offsetTop;\n var virtualListInfoStartIndex = this.virtualListInfo && this.virtualListInfo.startIndex\n ? this.virtualListInfo.startIndex\n : 0;\n var virtualListHeight = activeElement.offsetHeight;\n var selectedLiOffsetTopWithStartIndex = selectedLiOffsetTop +\n (virtualListInfoStartIndex * virtualListHeight);\n var virtualListLength = this.list.querySelectorAll('.e-virtual-list').length;\n var scrollTopOffset = virtualListLength * virtualListHeight;\n this.list.scrollTop = selectedLiOffsetTopWithStartIndex - scrollTopOffset;\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) ||\n (this.allowObjectBinding && this.previousValue && currentFillValue &&\n !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) :\n 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.typedString = this.filterInput.value;\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) ||\n (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) ||\n (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) ||\n (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom && this.isFocused) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) ||\n (this.allowObjectBinding && ((previousValue == null && this.value !== null) ||\n (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n this.autoFill = this.autofill;\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 text = !isNullOrUndefined(dataItem.text) ? dataItem.text.replace(/\\r\\n|\\n|\\r/g, '') : dataItem.text;\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"isDeviceFullScreen\", 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 Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * <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 value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since default value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos\n ? filterQuery.queries[queryElements].e.nos\n : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n var currentTakeValue = this.query.queries[queryElements].e.nos;\n queryTakeValue = takeValue <= currentTakeValue ? currentTakeValue : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n var currentQueryTakeValue = filterQuery.queries[queryElements].e.nos;\n queryTakeValue = currentQueryTakeValue <= queryTakeValue ? queryTakeValue : currentQueryTakeValue;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n this.isRequesting = false;\n if (this.queryString !== '' && this.debounceDelay > 0) {\n this.debouncedFiltering(e, this.debounceDelay);\n }\n else {\n this.performFiltering(e);\n }\n };\n AutoComplete.prototype.performFiltering = function (e) {\n var _this_1 = this;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.enableVirtualization && !isNoDataElement) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n var virtualElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\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 if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {\n this.focusIndexItem();\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 this.isFiltered = false;\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text\n ? newProp.text\n : newProp && newProp.value\n ? newProp.value\n : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue)\n ? getValue((this.fields.value) ? this.fields.value : '', oldValue)\n : oldValue;\n value = !isNullOrUndefined(value)\n ? getValue((this.fields.value) ? this.fields.value : '', value)\n : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var _this_2 = null || this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n if (newProp && newProp.text) {\n _this_2.setOldText(oldValue);\n }\n else if (newProp && newProp.value) {\n _this_2.setOldValue(oldValue);\n }\n else {\n _this_2.updateValues();\n }\n }\n });\n }\n else if (newProp) {\n if (newProp.text) {\n this.setOldText(oldValue);\n }\n else {\n this.setOldValue(oldValue);\n }\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\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 * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <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 { isCollide, Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\nvar RESIZE_ICON = 'e-resizer-right e-icons';\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.storedSelectAllHeight = 0;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n _this.isBlurDispatching = false;\n _this.isFilterPrevented = false;\n _this.isFilteringAction = false;\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.preventSetCurrentData = false;\n _this.isSelectAllLoop = 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.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem(true);\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 if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto') {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n attributes(_this.inputElement, {\n 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id\n });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n this.isVirtualReorder = true;\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.isVirtualReorder = false;\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding\n ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1])\n : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle, undefined, false, null, true);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem, undefined, false, null, true);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function (isOpen) {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED + ')');\n if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n element = elements && elements.length > 0 ? elements[2] : element;\n }\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n element = elements && elements.length > 0 ? elements[2] : element;\n }\n }\n }\n else {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding\n ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1])\n : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() &&\n this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, {\n 'id': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-hidden': 'false',\n 'aria-label': 'list'\n });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(value)) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = this.isPrimitiveData ? '' : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n var startindex = this.viewPortInfo.startIndex;\n var endindex = (((startindex + this.viewPortInfo.endIndex) <= (valuecheck.length)) &&\n valuecheck[(startindex + this.viewPortInfo.endIndex)]) ? (startindex + this.viewPortInfo.endIndex)\n : (valuecheck.length);\n for (var i = startindex; i < endindex; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === startindex) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (this.isaddNonPresentItems) {\n predicate = i === 0 ? new Predicate(field, 'equal', valuecheck[i])\n : predicate.or(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = i === 0 ? predicate = new Predicate(field, 'notequal', (value))\n : predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n 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.value && list && list.length > 0 && this.allowFiltering && this.mode !== 'CheckBox' && !this.enableVirtualization && !this.isFilterPrevented && !this.allowCustomValue && this.isFilteringAction) {\n var allItemsInValue = list.every(function (item) {\n var itemValue = getValue((_this.fields.value) ? _this.fields.value : '', item);\n return _this.value.some(function (val) {\n var value = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', val) : val;\n return itemValue === value;\n });\n });\n if (allItemsInValue) {\n ulElement.innerHTML = '';\n list = [];\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization &&\n this.listData && this.listData.length > 0) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !(valuecheck.length === 1 && valuecheck[0] == null)) {\n this.isaddNonPresentItems = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n this.isaddNonPresentItems = false;\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered &&\n this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fields.disabled)) {\n this.disableGroupHeader();\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) &&\n this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n else if (!this.isRemoveSelection) {\n this.initialValueUpdate(this.listData, true);\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) :\n 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 + ')' + ':not(.' + DISABLED + ')');\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 = !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.e-list-group-item.e-active:not(.e-disabled)').length : this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-disabled)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' &&\n this.showSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n return this.virtualFilterQuery(filterQuery);\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization &&\n this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.take(this.maximumSelectionLength).requiresCount() :\n new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.take(this.maximumSelectionLength).requiresCount() :\n new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e &&\n filterQuery.queries[queryElements].e.condition === 'or') || (filterQuery.queries[queryElements].e &&\n filterQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ?\n filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ?\n this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ?\n queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) && !this.isVirtualReorder) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n this.customFilterQuery = null;\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ?\n this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand || (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0)) {\n this.remoteCustomValue = false;\n var isReordered = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length === 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\n if (this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n if (this.value && this.value.length > 0 && this.mode === 'CheckBox') {\n this.notify('setCurrentViewDataAsync', {\n component: this.getModuleName(),\n module: 'VirtualScroll'\n });\n isReordered = true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length :\n this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var contentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n contentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(contentElement).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',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n if (!isReordered) {\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n if (this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n this.list.querySelector('.e-list-parent' + '.e-reorder').remove();\n }\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) &&\n !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var contentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n contentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.allowResize) {\n this.setResize();\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ?\n Object.keys(this.firstItem) : Object.keys(dataItem_1);\n var isNumberType_1 = (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ?\n ((key === fields.text) && isNumberType_1) ? getValue(fields.text, dataItem_1) :\n getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ?\n JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ?\n tempCount : this.totalItemCount;\n }\n else {\n if (this.dataSource instanceof DataManager && this.allowCustomValue && this.allowFiltering) {\n this.remoteCustomValue = false;\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n this.checkAndScrollParent();\n };\n MultiSelect.prototype.checkAndScrollParent = function () {\n var scrollElement = this.overAllWrapper ? this.overAllWrapper.parentElement : null;\n while (scrollElement) {\n var scrollElementStyle = getComputedStyle(scrollElement);\n var scrollElmentHeight = parseFloat(scrollElementStyle.maxHeight) || parseFloat(scrollElementStyle.height);\n if (!isNaN(scrollElmentHeight) && this.isPopupOpen()) {\n var overflowY = scrollElementStyle.overflowY;\n var wrapperBottom = this.overAllWrapper.getBoundingClientRect().bottom;\n var scrollElementBottom = scrollElement.getBoundingClientRect().bottom;\n if ((overflowY === 'auto' || overflowY === 'scroll') && wrapperBottom > scrollElementBottom) {\n scrollElement.scrollTop += (wrapperBottom - scrollElementBottom) + 10;\n return;\n }\n }\n scrollElement = scrollElement.parentElement;\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 (this.isBlurDispatching && this.isAngular) {\n this.isBlurDispatching = false;\n return;\n }\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 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] &&\n 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.isBlurDispatching = true;\n if (this.isAngular) {\n this.dispatchEvent(this.inputElement, 'blur');\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, 10));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight, 10);\n elementWidth = this.overAllWrapper.clientWidth -\n (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight, 10)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n if (this.enableVirtualization && this.enableSelectionOrder && this.mode === 'CheckBox') {\n this.preventSetCurrentData = false;\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li +\n ':not(.' + HIDE_LIST + ')' +\n ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||\n previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n previousItem = previousItem.previousElementSibling;\n }\n if (!previousItem) {\n return;\n }\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0)\n ? this.liCollections[steps]\n : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex === 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list-end)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||\n previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n previousItem = previousItem.nextElementSibling;\n }\n if (!previousItem) {\n return;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && previousItem && previousItem.classList.contains('e-virtual-list-end')) {\n previousItem = collection[collection.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\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 var codePoint = this.placeholder.charCodeAt(0);\n var sizeMultiplier = (0xAC00 <= codePoint && codePoint <= 0xD7AF) ? 1.5\n : (0x4E00 <= codePoint && codePoint <= 0x9FFF) ? 2 : 1;\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length * sizeMultiplier;\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.updatePopupPosition = function () {\n this.refreshPopup();\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 if (filterInput) {\n filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n else if (this.mode === 'CheckBox') {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) ||\n (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n this.isKeyBoardAction = false;\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n this.isKeyBoardAction = false;\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n this.isKeyBoardAction = false;\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') :\n false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) :\n this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n if (this.allowFiltering || this.allowCustomValue) {\n this.refreshListItems(null);\n }\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode, isInitial) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if (isInitial === void 0) { isInitial = false; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||\n (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list:not(.e-virtual-list-end)').length;\n var liItems = this.list.querySelectorAll('li:not(.e-virtual-list-end)');\n var lastElementValue = liItems && liItems.length > 0 && liItems[liItems.length - 1] ?\n liItems[liItems.length - 1].getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin))\n : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode === 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue &&\n currentElementValue === lastElementValue && keyCode !== 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += (selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.isScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode === 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode === 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +\n (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list:not(.e-virtual-list-end)').length;\n var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?\n selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin)) :\n selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight +\n selectedListMargin)) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ?\n this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode === 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue &&\n currentElementValue === firstElementValue && keyCode !== 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= (selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode === 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode === 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.isScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\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 var isFilterData = this.targetElement().trim() !== '' ? true : false;\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent, isFilterData);\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, isFilterData) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData &&\n this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n if (this.allowFiltering && isFilterData) {\n this.updateInitialData();\n this.onActionComplete(list, this.mainData);\n this.isVirtualTrackHeight = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :\n selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.updateDelimeter(this.delimiterChar, 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' ||\n filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') &&\n selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list-end)');\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)' + ':not(.e-virtual-list-end)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position === 1 && !isNullOrUndefined(selectAllParent) &&\n !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length === 0 &&\n this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position === -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n var focusedLi = this.list ? this.list.querySelector('.e-item-focus') : null;\n if (this.isDisabledElement(focusedLi)) {\n if (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem):not(.e-disabled)').length === 0 || (this.keyCode === 38 && this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && focusedLi === this.list.querySelector('li.e-list-group-item'))) {\n this.removeFocus();\n return;\n }\n var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));\n if (index === 0) {\n position = 1;\n }\n if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {\n position = -1;\n }\n this.moveByList(position);\n }\n };\n MultiSelect.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) &&\n this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ?\n this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ?\n this.fields.value : ''), value) : value;\n var element_1 = this.virtualSelectAll ? null : this.findListElement(this.list, 'li', 'data-value', currentValue);\n var val_1 = this.allowObjectBinding ? value : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n _this.isRemoveSelection = _this.enableVirtualization ? true : _this.isRemoveSelection;\n _this.currentRemoveValue = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index === 0 && _this.text.split(_this.delimiterChar) &&\n _this.text.split(_this.delimiterChar).length === 1 ?\n _this.text.replace(_this.text.split(_this.delimiterChar)[index], '') :\n index === 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] +\n _this.delimiterChar, '') :\n _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (!(this.enableVirtualization && isClearAll)) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n // eslint-disable-next-line no-prototype-builtins\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) &&\n item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(this.getDataByValue(value), this.value)) || (!this.allowObjectBinding &&\n this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization && !this.isSelectAllLoop) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var currentText = [];\n var value_1 = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) :\n this.value[this.value.length - 1];\n var temp = text;\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var activeItems = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.e-active');\n removeClass(activeItems, 'e-disable');\n var inactiveItems = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(inactiveItems, 'e-disable');\n }\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li);\n removeClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length, dataValue, text) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = dataValue ? dataValue : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (dataValue) {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push(dataValue);\n }\n else {\n _this.selectedListData = [_this.selectedListData, dataValue];\n }\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve, text);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return (this.allowResize && this.resizeWidth) ? this.resizeWidth + 'px' : 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 && document.body.contains(this.popupObj.element) && this.allowFiltering) {\n this.refreshPopup();\n return;\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 this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight +\n parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10);\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n var contentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n contentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemsCount();\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] &&\n _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight +\n parseInt(window.getComputedStyle(_this.getItems()[1]).marginBottom, 10);\n if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n }\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (this.allowResize) {\n this.setResize();\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen)) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields, false, this.isClearAllAction);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = this.itemCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < this.itemCount * 2 &&\n ((!(this.dataSource instanceof DataManager)) || ((this.dataSource instanceof DataManager) &&\n (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (this.enableVirtualization) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n this.setDynValue = false;\n this.isClearAllAction = true;\n if (this.value && this.value.length > 0) {\n if (this.allowFiltering) {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox' && this.targetInputElement) {\n this.targetInputElement.value = '';\n }\n }\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n 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 if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = this.itemCount;\n }\n this.isClearAllAction = false;\n }\n this.isClearAllItem = true;\n EventHandler.add(document, 'mouseup', this.preventSelection, this);\n };\n MultiSelect.prototype.preventSelection = function (e) {\n if (this.isClearAllItem) {\n e.stopPropagation();\n }\n this.isClearAllItem = false;\n EventHandler.remove(document, 'mouseup', this.preventSelection);\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.allowResize) {\n this.setResize();\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 if (!isNullOrUndefined(this.inputElement)) {\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 };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.performFiltering = function (e) {\n var _this = this;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.customFilterQuery = query;\n _this.remoteFilterAction = true;\n _this.isCustomFiltering = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n _this.isFilterPrevented = eventArgs.cancel;\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.isFilteringAction = true;\n if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {\n _this.isCustomRendered = false;\n }\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n _this.isFilteringAction = false;\n }\n }\n });\n };\n MultiSelect.prototype.search = function (e) {\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n this.isRequesting = false;\n if (this.targetElement() !== '' && this.debounceDelay > 0) {\n this.debouncedFiltering(e, this.debounceDelay);\n }\n else {\n this.performFiltering(e);\n }\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) ||\n this.incrementalEndIndex === 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount :\n this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if (!(this.viewPortInfo.startIndex >= activeElement.index) ||\n !(activeElement.index >= this.viewPortInfo.endIndex)) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0\n ? activeElement.index - ((this.itemCount / 2) - 2)\n : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount\n ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2)\n : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.isaddNonPresentItems = false;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e, isInitialVirtualData) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement) && !this.enableVirtualization) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n var _loop_2 = function (index) {\n var valueItem = this_1.allowObjectBinding ?\n getValue((this_1.fields.value) ? this_1.fields.value : '', this_1.value[index]) : this_1.value[index];\n var listValue = this_1.findListElement((!isNullOrUndefined(this_1.mainList) ? this_1.mainList : this_1.ulElement), 'li', 'data-value', valueItem);\n if (this_1.enableVirtualization) {\n listValue = this_1.findListElement((!isNullOrUndefined(this_1.list) ? this_1.list : this_1.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this_1.allowCustomValue && !this_1.enableVirtualization &&\n this_1.listData && this_1.listData.length > 0) {\n this_1.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this_1.listData) {\n if (this_1.enableVirtualization) {\n if (delim && !this_1.isDynamicRemoteVirtualData) {\n data = this_1.delimiterWrapper && this_1.delimiterWrapper.innerHTML === '' ? data :\n this_1.delimiterWrapper.innerHTML;\n }\n var value = this_1.allowObjectBinding ?\n getValue(((this_1.fields.value) ? this_1.fields.value : ''), this_1.value[this_1.value.length - 1]) :\n this_1.value[this_1.value.length - 1];\n if (this_1.isRemoveSelection) {\n data = this_1.text.replace(/,/g, delimiterChar + ' ') + delimiterChar + ' ';\n text = this_1.text.split(delimiterChar);\n }\n else {\n temp = isInitialVirtualData && delim ? this_1.text : this_1.getTextByValue(value);\n var textValues = this_1.isDynamicRemoteVirtualData && value != null && value !== '' && !isInitialVirtualData ?\n this_1.getTextByValue(value) : isInitialVirtualData ? this_1.text : (this_1.text && this_1.text !== '' ? this_1.text + this_1.delimiterChar + temp : temp);\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n hiddenElementContent = this_1.hiddenElement.innerHTML;\n }\n if ((e && e.currentTarget && e.currentTarget.classList.contains('e-chips-close')) ||\n (e && (e.key === 'Backspace'))) {\n var item_1 = e.target.parentElement.getAttribute('data-value');\n if (e.key === 'Backspace') {\n var lastChild = this_1.hiddenElement.lastChild;\n if (lastChild) {\n this_1.hiddenElement.removeChild(lastChild);\n }\n }\n else {\n this_1.hiddenElement.childNodes.forEach(function (option) {\n if (option.value === item_1) {\n option.parentNode.removeChild(option);\n }\n });\n }\n hiddenElementContent = this_1.hiddenElement.innerHTML;\n }\n else {\n hiddenElementContent += '<option selected value=\\'' + value + '\\'>' + index + '</option>';\n }\n return out_index_1 = index, \"break\";\n }\n else {\n temp = this_1.getTextByValue(valueItem);\n }\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 out_index_1 = index;\n };\n var this_1 = this, out_index_1;\n for (var index = 0; index < valueLength; index++) {\n var state_2 = _loop_2(index);\n index = out_index_1;\n if (state_2 === \"break\")\n break;\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n if (this.isRemoveSelection) {\n if (this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue)) {\n this.hiddenElement.removeChild(this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue));\n }\n this.isRemoveSelection = false;\n }\n else {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) :\n this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if ((this.isPrimitiveData && listItems[i] === value) || (!this.isPrimitiveData\n && getValue((this.fields.value ? this.fields.value :\n 'value'), listItems[i]) === value)) {\n text = this.isPrimitiveData ? listItems[i] :\n getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) &&\n ((!(this.dataSource instanceof DataManager)) ||\n (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) ||\n (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.isDynamicRemoteVirtualData && text != null && text !== '' && index === 0 ? text : this.text != null && this.text !== '' && !this.text.includes(text) ? this.text + this.delimiterChar + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) ||\n (this.enableVirtualization &&\n value &&\n this.allowCustomValue &&\n ((!(this.dataSource instanceof DataManager)) ||\n (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ?\n this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, null, isInitialVirtualData);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) ||\n (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 &&\n this.ulElement.children[0].childElementCount > 0) &&\n (this.mainList.children[0] && (this.mainList.children[0].childElementCount <\n this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 &&\n !(this.ulElement.childElementCount < this.mainList.childElementCount) &&\n (this.ulElement.children[0].childElementCount > 0 ||\n (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.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n this.checkAndScrollParent();\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e, currentText) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = currentText ? currentText : this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) &&\n !this.findListElement(this.mainList, 'li', 'data-value', value) &&\n (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && (this.isValidLI(element) || (this.fields.disabled && this.isDisabledElement(element)))) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e, isInitialVirtualData) {\n this.updateData(delimChar, e, isInitialVirtualData);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n if (!this.isClearAllItem) {\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.allowResize) {\n this.setResize();\n }\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n var isFilterData = this.targetElement().trim() !== '' ? true : false;\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent, isFilterData);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ?\n Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.'\n + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length :\n this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n }\n };\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 (!(this.fields.disabled && this.isDisabledElement(listElement))) {\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 }\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 || (!isNullOrUndefined(this.fields.disabled) && count === 0)) {\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.disableGroupHeader = function () {\n var collection = this.list.querySelectorAll('li.e-list-group-item');\n if (collection) {\n for (var index = 0; index < collection.length; index++) {\n var isDisabled = true;\n var target = collection[index].nextElementSibling;\n while (!target.classList.contains('e-list-group-item')) {\n if (!this.isDisabledElement(target)) {\n isDisabled = false;\n break;\n }\n target = target.nextElementSibling;\n if (target == null) {\n break;\n }\n }\n if (isDisabled) {\n this.disableListItem(collection[index]);\n }\n }\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value) && (this.allowCustomValue || (this.listData && this.listData.length > 0))) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10) +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingLeft, 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 parseInt(window.getComputedStyle(this.viewWrapper).paddingLeft, 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 parseInt(window.getComputedStyle(this.viewWrapper).paddingLeft, 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 = parseInt(window.getComputedStyle(this.overAllClear).width, 10) || 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).paddingRight, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) :\n 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.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n MultiSelect.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ?\n 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 (!(this.fields.disabled && this.isDisabledElement(listElement))) {\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 }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.virtualSelectionAll = function (state, li, event) {\n var _this = this;\n var index = 0;\n var length = li.length;\n var count = this.maximumSelectionLength;\n if (state) {\n this.virtualSelectAll = true;\n length = this.virtualSelectAllData && this.virtualSelectAllData.length !== 0 ? this.virtualSelectAllData.length : length;\n this.listData = this.virtualSelectAllData;\n var ulElement = this.createListItems(this.virtualSelectAllData.slice(0, 30), this.fields);\n var firstItems = ulElement.querySelectorAll('li');\n var fragment_1 = document.createDocumentFragment();\n firstItems.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n li.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n var concatenatedNodeList = fragment_1.childNodes;\n if (this.virtualSelectAllData instanceof Array) {\n while (index < length && index <= 50 && index < count) {\n this.isSelectAllTarget = (length === index + 1);\n if (concatenatedNodeList[index]) {\n var value = this.allowObjectBinding\n ? this.getDataByValue(concatenatedNodeList[index].getAttribute('data-value'))\n : this.getFormattedValue(concatenatedNodeList[index].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n this.updateListSelection(concatenatedNodeList[index], event, length - index);\n }\n else {\n var value = getValue(this.fields.value ? this.fields.value : '', this.virtualSelectAllData[index]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n if (this.value && value != null && Array.isArray(this.value) &&\n ((!this.allowObjectBinding && this.value.indexOf(value) < 0) ||\n (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.dispatchSelect(value, event, null, false, length);\n }\n }\n index++;\n }\n if (length > 50) {\n setTimeout(function () {\n if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {\n _this.virtualSelectAllData.map(function (obj) {\n if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) &&\n ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) ||\n (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {\n var value = obj[_this.fields.value];\n var text = (obj[_this.fields.text]).toString();\n _this.dispatchSelect(value, event, null, false, length, obj, text);\n }\n });\n }\n _this.updatedataValueItems(event);\n _this.isSelectAllLoop = false;\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement(true);\n if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index - 1].classList.remove('e-item-focus');\n }\n }\n _this.checkSelectAll();\n }, 0);\n }\n }\n }\n else {\n if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {\n this.virtualSelectAllData.map(function (obj) {\n _this.virtualSelectAll = true;\n _this.removeValue(_this.value[index], event, _this.value.length - index);\n });\n }\n this.updatedataValueItems(event);\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n this.setProperties({ value: [] }, true);\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify('setCurrentViewDataAsync', {\n component: this.getModuleName(),\n module: 'VirtualScroll'\n });\n }\n }\n this.checkSelectAll();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n virtualTrackElement.style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n virtualContentElement.style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if ((li && li.length) || (this.enableVirtualization && !state)) {\n var index_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 if (this.enableVirtualization) {\n this.virtualSelectAllState = state;\n this.virtualSelectAll = true;\n this.CurrentEvent = event;\n if (!this.virtualSelectAllData) {\n this.resetList(this.dataSource, this.fields, new Query());\n }\n if (this.virtualSelectAllData) {\n this.virtualSelectionAll(state, li, event);\n }\n }\n else {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.isSelectAllTarget = (length === index_1 + 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.isSelectAllTarget = (length === index_1 + 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 if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_1 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value) < 0) ||\n (this.allowObjectBinding && !this.isObjectInArray(value, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n if ((this.enableVirtualization && this.value && this.value.length > 0) || !this.enableVirtualization) {\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function (isVirtualSelectAll) {\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 (!isVirtualSelectAll) {\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 });\n this.hiddenElement.innerHTML = hiddenValue;\n if (!isVirtualSelectAll) {\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.setProperties({ text: text.toString() }, true);\n }\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if ((!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) || (this.isSelectAll && this.isSelectAllTarget)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n if (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualSelectAllData)) {\n this.virtualSelectAll = false;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n if (this.fields.disabled) {\n this.text =\n this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.isPopupOpen() && this.mode === 'CheckBox' && this.list && this.list.querySelector('.e-active.e-disable')) {\n var activeItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + '.e-active' + '.e-disable');\n removeClass(activeItems, 'e-disable');\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 'allowResize':\n this.allowResize = newProp.allowResize;\n if (!this.allowResize && 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.height = formatUnit(this.popupHeight);\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 '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) &&\n !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n 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 var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount !== 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ?\n this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ?\n this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\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 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.isaddNonPresentItems = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n this.isaddNonPresentItems = false;\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization) {\n this.initialValueUpdate();\n }\n else if (this.enableVirtualization && (!(this.dataSource instanceof DataManager))) {\n this.initialValueUpdate(this.dataSource, true);\n }\n else if (!this.isInitRemoteVirtualData) {\n this.isDynamicRemoteVirtualData = true;\n this.initialValueUpdate(this.listData, true);\n this.isDynamicRemoteVirtualData = false;\n this.initialUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode === 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.list && _this.list.parentElement && _this.allowResize) {\n if (_this.resizer && _this.list.parentElement.contains(_this.resizer)) {\n _this.list.parentElement.removeChild(_this.resizer);\n }\n if (_this.list.parentElement.classList.contains('e-resize')) {\n _this.list.parentElement.classList.remove('e-resize');\n }\n _this.list.parentElement.style.boxSizing = '';\n _this.list.parentElement.style.paddingBottom = '';\n var overAllHeight = parseInt(_this.popupHeight, 10);\n _this.list.style.maxHeight = formatUnit(overAllHeight);\n if (_this.popupHeight.toString().toLowerCase() !== 'auto' && _this.initialPopupHeight >= (parseInt(_this.popupHeight.toString(), 10) - 2)) {\n _this.list.parentElement.style.height = formatUnit(_this.popupHeight);\n }\n _this.list.parentElement.style.maxHeight = formatUnit(_this.popupHeight);\n }\n if (_this.resizer) {\n EventHandler.remove(_this.resizer, 'mousedown', _this.startResizing);\n _this.resizer.remove();\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 &&\n _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ?\n _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = _this.itemCount;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n if (_this.remoteDataCount >= 0) {\n _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n }\n else {\n _this.resetList(_this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) &&\n (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.checkAndResetCache();\n _this.updateInitialData();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 &&\n _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\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) &&\n !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' ||\n _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) &&\n !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify('setCurrentViewDataAsync', {\n component: _this.getModuleName(),\n module: 'VirtualScroll'\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null &&\n _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ?\n getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n if (_this.allowResize) {\n _this.setResize();\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value) && this.value.length > 0) {\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', {\n className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ?\n BOX_ELEMENT : '')\n });\n this.viewWrapper = this.createElement('span', {\n className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER\n });\n this.viewWrapper.style.display = 'none';\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n this.overAllClear.style.display = 'none';\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 });\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollectionWrapper.style.display = 'none';\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\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')) &&\n closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ?\n this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n 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.setResize = function () {\n var resizePaddingBottom = 16;\n if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {\n this.resizer = this.createElement('div', {\n id: this.element.id + '_resize-popup',\n className: RESIZE_ICON\n });\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {\n this.storedSelectAllHeight = this.selectAllHeight;\n }\n if (this.list && this.list.parentElement) {\n this.list.parentElement.classList.add('e-resize');\n this.initialPopupHeight = this.list.parentElement.clientHeight;\n if (this.popupHeight.toString().toLowerCase() !== 'auto' && this.initialPopupHeight >= (parseInt(this.popupHeight.toString(), 10) - 2)) {\n this.list.parentElement.style.height = '100%';\n }\n this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size\n var paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;\n this.list.parentElement.style.paddingBottom = paddingBottom + \"px\";\n this.list.parentElement.appendChild(this.resizer);\n this.list.parentElement.style.width = this.resizeWidth + 'px';\n this.list.parentElement.style.height = this.resizeHeight + 'px';\n this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.headerTemplate) {\n var headerElem = this.list.parentElement.querySelector('.e-ddl-header');\n if (headerElem && headerElem.offsetHeight) {\n this.headerTemplateHeight = headerElem.offsetHeight;\n }\n if (this.resizeHeight) {\n this.list.style.maxHeight = this.resizeHeight - this.headerTemplateHeight - 16 + \"px\";\n }\n else {\n this.list.style.maxHeight = parseInt(this.list.style.maxHeight, 10) - 16 + \"px\";\n }\n }\n }\n if (this.resizer) {\n EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);\n EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);\n }\n };\n MultiSelect.prototype.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n this.resizingWireEvent();\n // Prevent default behavior like text selection\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n // Set minimum width and height (100px)\n var minWidth = 100;\n var minHeight = 130;\n // Ensure the new width and height are not smaller than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n if (this.list && this.list.parentElement) {\n // Set minimum width and height (100px)\n var minWidth_1 = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight_1 = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth_1 = minWidth_1 || 100;\n minHeight_1 = minHeight_1 || 120;\n // Ensure the new width and height are not smaller than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth_1);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight_1);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.headerTemplate) {\n this.list.style.maxHeight = this.resizeHeight - this.headerTemplateHeight - 16 + \"px\";\n }\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height) +\n parseInt(window.getComputedStyle(item).marginBottom, 10);\n listParent.remove();\n return listItemHeight;\n };\n /**\n * Removes disabled values from the given array.\n *\n * @param { number[] | string[] | boolean[] | object[] } value - The array to check.\n * @returns {void}\n */\n MultiSelect.prototype.removeDisabledItemsValue = function (value) {\n if (value) {\n var data = [];\n var dataIndex = 0;\n for (var index = 0; index < value.length; index++) {\n var indexValue = value[index];\n if (typeof (indexValue) === 'object') {\n indexValue = JSON.parse(JSON.stringify(indexValue))[this.fields.value];\n }\n if ((indexValue != null) && !(this.isDisabledItemByIndex(this.getIndexByValue(indexValue)))) {\n data[dataIndex++] = value[index];\n }\n }\n this.value = data.length > 0 ? data : null;\n }\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(value);\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (this.fields.disabled) {\n this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = !this.isPrimitiveData ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ?\n getValue((this.fields.value) ? this.fields.value : '', this.value[i]) :\n this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n _this.isInitRemoteVirtualData = true;\n setTimeout(function () {\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n _this.isInitRemoteVirtualData = false;\n }, 100);\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2, true);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n MultiSelect.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n if (li.classList.contains(dropDownBaseClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(HIDE_LIST) || li.classList.contains(dropDownBaseClasses.selected)) {\n var oldValue = this.value;\n this.removeDisabledItemsValue(this.value);\n this.updateVal(this.value, oldValue, 'value');\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.disableGroupHeader();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.hide();\n this.popupObj.destroy();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n var temp = ['readonly', 'aria-disabled', 'placeholder', 'aria-label', 'aria-expanded'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n if (this.popupWrapper && this.popupWrapper.parentElement) {\n this.popupWrapper.parentElement.remove();\n }\n while (this.searchWrapper && this.searchWrapper.firstChild) {\n this.searchWrapper.removeChild(this.searchWrapper.firstChild);\n }\n if (this.searchWrapper && this.searchWrapper.parentElement) {\n this.searchWrapper.parentElement.remove();\n }\n if (this.viewWrapper && this.viewWrapper.parentElement) {\n this.viewWrapper.parentElement.remove();\n }\n if (this.overAllClear && this.overAllClear.parentElement) {\n this.overAllClear.parentElement.remove();\n }\n if (this.delimiterWrapper && this.delimiterWrapper.parentElement) {\n this.delimiterWrapper.parentElement.remove();\n }\n // Remove the select element if it exists\n var selectElement = this.overAllWrapper.querySelector('select.e-multi-hidden');\n if (selectElement && selectElement.parentElement) {\n selectElement.parentElement.remove();\n }\n while (this.componentWrapper && this.componentWrapper.firstChild) {\n this.componentWrapper.removeChild(this.componentWrapper.firstChild);\n }\n if (this.componentWrapper && this.componentWrapper.parentElement) {\n this.componentWrapper.removeAttribute('class');\n this.componentWrapper.parentElement.remove();\n }\n while (this.popupWrapper && this.popupWrapper.firstChild) {\n this.popupWrapper.removeChild(this.popupWrapper.firstChild);\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-label', 'aria-hidden', 'tabindex', 'aria-controls',\n 'aria-describedby', 'size', 'role', 'type', 'class'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n }\n if (this.inputElement) {\n this.inputElement.remove();\n }\n this.list = null;\n this.popupObj = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\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.liCollections = null;\n this.popupContentElement = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(300)\n ], MultiSelect.prototype, \"debounceDelay\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"isDeviceFullScreen\", 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(false)\n ], MultiSelect.prototype, \"allowResize\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) ||\n (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 && this.parent.isDeviceFullScreen) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n if (!this.parent.enableVirtualization || (this.parent.enableVirtualization && (isNullOrUndefined(this.parent.value)\n || (this.parent.value && this.parent.value.length === 0)))) {\n this.setReorder(e);\n }\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n var footerHeight = 0;\n var headerHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n if (this.parent.header) {\n headerHeight = this.parent.header.getBoundingClientRect().height;\n }\n if (this.parent.footer) {\n footerHeight = this.parent.footer.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 - headerHeight - footerHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight - headerHeight - footerHeight) + '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 if (!isNullOrUndefined(this.selectAllSpan)) {\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <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, setValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <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.isBackSpace = 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 if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n if (this.isAngular && this.allowFiltering) {\n var originalElement = this.element;\n var clonedElement = originalElement.cloneNode(true);\n originalElement.parentNode.replaceChild(clonedElement, originalElement);\n this.element = clonedElement;\n setValue('ej2_instances', [this], this.element);\n }\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n this.inputFormName = this.element.getAttribute('name');\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad && this.element.parentElement) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n beforeDragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index === null ? this.jsonData.length : index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n this.toolbarSettings.items = isNullOrUndefined(this.toolbarSettings.items) ? [] : this.toolbarSettings.items;\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n if (this.inputFormName) {\n input.setAttribute('name', this.inputFormName);\n }\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n if (this.element.parentElement) {\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n }\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var _this = this;\n var searchEle;\n var filterElem;\n var txtLength;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (isNullOrUndefined(filterElem)) {\n return;\n }\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n if (filterElem.value !== '' || (filterElem.value === '' && this.isBackSpace)) {\n filterElem.focus();\n setTimeout(function () { _this.isBackSpace = false; });\n }\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 var extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', extendedArgs, 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 if (dragEventArgs.cancel) {\n args.cancel = true;\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n if (scrollParent) {\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (JSON.stringify(args.items) !== JSON.stringify(items)) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n if (listObj.sortOrder === 'None') {\n listObj.sortedData = extend([], [], sortedData, false);\n }\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 if (this.toolbarSettings.items.length > 0) {\n this.updateToolBarState();\n }\n else if (this.tBListBox && this.tBListBox.toolbarSettings.items.length > 0) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n destElem.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destElem.append.apply(destElem, sourceElem.childNodes);\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 if (this.allowFiltering && this.filterInput && this.filterInput.value !== '' && this.toolbarSettings.items.length > 0) {\n var canDisable_1 = false;\n this.ulElement.childNodes.forEach(function (li) { if (!li.classList.contains('e-disabled')) {\n canDisable_1 = true;\n } });\n if (!canDisable_1) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"moveAllTo\"]');\n btn.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 if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\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 _this = this;\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 = {};\n var dupData = [];\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var i = 0; i < dupData.length; i++) {\n var value = (dupData[i] instanceof Object) ? dupData[i][fields.value] :\n dupData[i].toString();\n objValue[value] = i;\n }\n for (var j = 0; j < items.length; j++) {\n dataValue = (items[j] instanceof Object) ? items[j][fields.value] :\n items[j].toString();\n if (Object.prototype.hasOwnProperty.call(objValue, dataValue)) {\n var idx = objValue[dataValue];\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n var validRemoveIdxes = removeIdxes.sort(function (a, b) { return b - a; });\n validRemoveIdxes.forEach(function (idx) {\n _this.listData.splice(idx, 1);\n _this.jsonData.splice(idx, 1);\n });\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n this.toolbarAction = 'moveAllTo';\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 window.addEventListener('resize', this.resizeHandler.bind(this));\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 window.removeEventListener('resize', this.resizeHandler.bind(this));\n };\n ListBox.prototype.clickHandler = function (e) {\n var li = closest(e.target, '.' + 'e-list-item');\n if (isNullOrUndefined(li)) {\n return;\n }\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'role': 'textbox'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else if (this.height.toString().indexOf('%') > 0) {\n this.ulElement.style.height = (this.ulElement.offsetHeight - this.filterParent.offsetHeight) + 'px';\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n this.ulElement.style.setProperty('height', 'calc(100% - ' + (this.filterParent.offsetHeight) + 'px)', 'important');\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 var len = elems.length;\n for (var i = 0; i < len; i++) {\n var elem = elems[i];\n var value = elem.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = this.getFormattedValue(value);\n data.push(this.getDataByValue(formattedValue));\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ulChildren_1 = Array.prototype.slice.call(fListBox.ulElement.children);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_1 = Array.prototype.slice.call(fListBox.ulElement.querySelectorAll('.e-list-item'));\n var lData_1 = fListBox.listData;\n var sData_1 = fListBox.sortedData;\n var jData_1 = fListBox.jsonData;\n var eData_1;\n var listDataMap_1 = {};\n if (elems.length > 199) {\n for (var _i = 0, _a = fListBox.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item)) {\n var key = fListBox.getFormattedValue(getValue((fListBox.fields.value ? fListBox.fields.value : 'value'), item));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listDataMap_1[key] = item;\n }\n }\n }\n elems.forEach(function (ele) {\n if (elems.length < 200) {\n eData_1 = fListBox.getDataByElems([ele])[0];\n }\n else {\n var value_1 = ele.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = fListBox.getFormattedValue(value_1);\n eData_1 = listDataMap_1[formattedValue];\n }\n idx.push(ulChildren_1.indexOf(ele));\n dataLiIdx.push(listItems_1.indexOf(ele));\n dataIdx.push(lData_1.indexOf(eData_1));\n sortIdx.push(sData_1.indexOf(eData_1));\n jsonIdx.push(jData_1.indexOf(eData_1));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n if (fListBox.liCollections.length === fListBox.ulElement.querySelectorAll('.e-disabled').length && this.toolbarAction) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var toolbarAction = this.toolbarAction === 'moveFrom' ? 'moveAllFrom' : 'moveAllTo';\n if (wrap) {\n var btn = wrap.querySelector('[data-value=\"' + toolbarAction + '\"]');\n btn.disabled = true;\n }\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNodes = fListBox.ulElement.childNodes;\n var childElementCount = fListBox.ulElement.childElementCount;\n var newFlistboxArray = [];\n for (var i = 0; i < childElementCount; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNode = childNodes[i];\n if (childNode.classList.contains('e-disabled')) {\n tempLiColl.push(childNode);\n if (this.sortOrder != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.sortedData[i]);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n }\n else {\n newFlistboxArray.push(i);\n }\n }\n flistboxarray = newFlistboxArray;\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < flistboxarray.length; i++) {\n if (this.sortOrder != null) {\n listData.splice(index + i, 0, fListBox.sortedData[flistboxarray[i]]);\n }\n else {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n }\n else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.liCollections);\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData.filter(function (data) { return (data !== undefined); });\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = tempData;\n }\n else if (fListBox.allowFiltering) {\n var disabledData_1 = [];\n if (tempLiColl.length > 0) {\n for (var i = 0; i < tempLiColl.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n disabledData_1.push(fListBox.getDataByValue(tempLiColl[i].getAttribute('data-value')));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fListBox.listData = fListBox.listData.filter(function (obj1) {\n return !disabledData_1.some(function (obj2) { return obj1 === obj2; });\n });\n }\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 if (tempLiColl.length > 0) {\n fListBox.listData = disabledData_1;\n fListBox.sortedData = [];\n }\n else {\n fListBox.listData = fListBox.sortedData = [];\n }\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0 && tempLiColl.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, event: args.event, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && (!this.allowFiltering ||\n (this.allowFiltering && e.target !== this.filterInput))) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey && this.selectionSettings.mode === 'Multiple') {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n var isWordAccentCharacter = char.match(/[A-Za-z0-9\\u00C0-\\u024F ]/);\n if (!isNullOrUndefined(isWordCharacter) || !isNullOrUndefined(isWordAccentCharacter)) {\n this.isValidKey = true;\n }\n this.isBackSpace = e.keyCode === 8;\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.preventDefActionFilter = eventArgsData_1.preventDefaultAction;\n _this.dataUpdater(dataSource, query, fields);\n _this.preventDefActionFilter = false;\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 _this.preventDefActionFilter = false;\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return isNullOrUndefined(this.targetInputElement) ? null : this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement() && 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.resizeHandler = function () {\n if (this.list && !(this.cssClass && this.cssClass.indexOf('e-horizontal-listbox') > -1)) {\n if (this.list.getElementsByClassName('e-filter-parent').length > 0 && this.allowFiltering) {\n this.ulElement.style.setProperty('height', 'calc(100% - ' + (this.filterParent.offsetHeight) + 'px)', 'important');\n }\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (\n // eslint-disable-next-line max-len\n values, isSelect, isText, canFocus) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n if (canFocus === void 0) { canFocus = true; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n if (text.indexOf('\\n') !== -1) {\n var txt = CSS.escape(text);\n li = _this.list.querySelector('[data-value=\"' + txt + '\"]');\n }\n else {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect && !li.classList.contains('e-disabled')) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n if (isNullOrUndefined(ele)) {\n return;\n }\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 if (isNullOrUndefined(inst.ulElement)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.dataSource) && isNullOrUndefined(this.dataSource.length)) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n if (inst.ulElement.querySelectorAll('.e-disabled').length > 0) {\n return inst.liCollections.length === inst.ulElement.querySelectorAll('.e-disabled').length;\n }\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n }\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n if (this.ulElement.classList.contains('e-sortable')) {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n oldProp.toolbarSettings.items = isNullOrUndefined(oldProp.toolbarSettings.items) ? [] : oldProp.toolbarSettings.items;\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('None')\n ], ListBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.debounceTimer = null;\n return _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 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 'requireLeadingSpace':\n this.requireLeadingSpace = newProp.requireLeadingSpace;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n if (!this.inputElement.hasAttribute('contenteditable')) {\n this.inputElement.setAttribute('contenteditable', 'true');\n }\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space' && this.mentionChar.charCodeAt(0) === this.getLastLetter(this.getTextRange()).charCodeAt(0)) {\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.isSelected = true;\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownBaseClasses.focus)\n || this.liCollections[index].classList.contains(dropDownBaseClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n this.updateUpDownAction(e);\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement !== this.inputElement && !isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var mentionRegex = new RegExp(this.mentionChar.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') + '\\\\s');\n var isValid = currentRange && mentionRegex.test(currentRange) ? false : true;\n var lastWordRange = this.getLastLetter(currentRange);\n var previousChar = currentRange ? currentRange.charAt(Math.max(0, currentRange.indexOf(this.mentionChar) - 1)) : '';\n if (isValid && this.allowSpaces && currentRange && currentRange.includes(this.mentionChar) && currentRange.split(this.mentionChar).pop() !== ''\n && (!this.requireLeadingSpace || (this.requireLeadingSpace && (previousChar === ' ' || currentRange.indexOf(this.mentionChar) === 0)))) {\n lastWordRange = this.mentionChar + currentRange.split(this.mentionChar).pop();\n }\n if (!this.requireLeadingSpace && lastWordRange && lastWordRange.includes(this.mentionChar)) {\n lastWordRange = this.mentionChar + lastWordRange.split(this.mentionChar).pop();\n }\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange === lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if (((!currentRange || !lastWordRange) || (!lastWordRange.includes(this.mentionChar) && !this.requireLeadingSpace)) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (isValid && this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0) && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (!this.requireLeadingSpace || this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {\n this.range.deleteContents();\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = !this.requireLeadingSpace\n ? lastWordRange.substring(lastWordRange.lastIndexOf(this.mentionChar) + 1).trim()\n : lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range &&\n this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if ((!this.requireLeadingSpace ? lastWordRange.includes(this.mentionChar)\n : lastWordRange.indexOf(this.mentionChar) === 0) && !this.isPopupOpen && e.keyCode !== 8 &&\n (!this.popupObj || ((isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element)) ||\n (!isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element))))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) ||\n (this.liCollections && this.liCollections.length > 0))) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.performFiltering = function (e) {\n var _this = this;\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.searchLists = function (e) {\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 if (this.queryString !== '' && this.debounceDelay > 0) {\n this.debouncedFiltering(e, this.debounceDelay);\n }\n else {\n this.performFiltering(e);\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 var isRTESlashMenuPopup = this.isRTE && this.cssClass && this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n ulElement.id = this.inputElement.id + '_slash_menu_options';\n }\n }\n var focusItem = this.fields.disabled ? ulElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled)') : ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.indexOf('\\u200B') > -1 ? text.replace(/\\u200B/g, '').replace(/\\u00A0/g, ' ') : 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 var isRTESlashMenuPopup = _this.isRTE && _this.cssClass && _this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n popupEle_1.id = _this.inputElement.id + '_slash_menu_popup';\n }\n else {\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement) {\n var rteRootElement = _this.inputElement.parentElement.closest('.e-richtexteditor');\n if (rteRootElement && popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', rteRootElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\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(), 10));\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(), 10));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] :\n range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement('span');\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop -\n (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === 'down' || e.action === 'up')) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.selectedLI.offsetTop - (this.list.scrollTop + this.fixedHeaderElement.offsetHeight) :\n 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 = typeof this.suffixText === 'string' ? this.suffixText : '';\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 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() &&\n this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n range.startContainer.parentElement.normalize();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n if (this.isRTE) {\n if (lastNode.nodeType === 3) {\n range.setStart(lastNode, lastNode.textContent.length);\n }\n else {\n range.setStartAfter(lastNode);\n }\n }\n else {\n range.setStartAfter(lastNode);\n }\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', { detail: { click: true } });\n this.inputElement.dispatchEvent(event_1);\n }\n 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 : '&#8203;');\n }\n else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '&#8203;');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\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 var 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 // 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 var 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 this.queryString = text;\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 if (!this.isPopupOpen) {\n this.renderPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n Mention.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n 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(true)\n ], Mention.prototype, \"requireLeadingSpace\", 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(300)\n ], Mention.prototype, \"debounceDelay\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import * as index from './index';\nindex.DropDownList.Inject(index.VirtualScroll);\nindex.ComboBox.Inject(index.VirtualScroll);\nindex.AutoComplete.Inject(index.VirtualScroll);\nindex.MultiSelect.Inject(index.CheckBoxSelection, index.VirtualScroll);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryStringUpdated","currentValue","isVirtual","refresh","queryString","prevString","tempQueryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","listItems","strLength","length","item","i","matches","innerText","substr","push","indexUpdated","i_1","textContent","classList","contains","activeClass","Search","inputVal","searchType","dataSource","fields","type","ignoreAccent","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","checkField_1","fieldValue_1","text","split","filter","data","Array","prototype","slice","call","forEach","value","isHeader","toString","indexOf","getAttribute","replace","normalize","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","match","charCodeAt","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","setAttribute","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__assign","Object","assign","t","s","n","arguments","p","hasOwnProperty","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","verb","v","op","f","TypeError","_","y","ops","pop","trys","g","sent","throw","return","Symbol","iterator","VirtualScroll","parent","_this","sentinelInfo","up","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","down","bottom","removeEventListener","addEventListener","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","popupContentElement","getBoundingClientRect","EventHandler","popupScrollHandler","touchModule","Touch","scroll","bind","virtualScrollHandler","getModuleName","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","skip","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","newQuery","removeSkipAndTakeEvents","clone","tempCustomFilter","isCustomFilter","totalData","DataManager","json","totalItemCount","typedString","resetList","queries","event","fn","currentData","isResetListCalled","isListUpdated","viewPortInfo","mode","isArray","enableSelectionOrder","targetElement","startIndex","oldUlElement","list","removeChild","updateVirtualReOrderList","itemCount","oldUlElement_1","getForQuery","take","appendUncheckList","setCurrentView","oldUlElement_2","reOrderList","skipvalue","totalItemsCount","alreadyAddedData","hideSelectedItem","getValue","Query","allowCustomValue","virtualCustomData","splice","virtualCustomSelectData","concat","renderItems","updateSelectionList","updatevirtualizationList","checkMaxSelection","getSkeletonCount","skeletonCount","virtualTrackElement","getElementsByClassName","preventAction","style","GetVirtualTrackHeight","popupWrapper","virualElement","styles","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","isScrollChanged","currentFocuedListElement","currentSelectElem","getElementByValue","addListFocus","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","isRequesting","isOpenPopup","selectedValueInfo","virtualScrollRefreshAsync","_a","isTyped","filterInput","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","customFilterQuery","isVirtualTrackHeight","preventSetCurrentData","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","getItems","previousInfo","isscrollAction","infoType","offsets","previousEndIndex","vHeight","height","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","Math","round","floor","eIndex","ceil","idxAddedToExactTop","scrollPreStartIndex","delay","Browser","name","prevTop","debounced100","debounce","debounced50","target","scrollTop","left","scrollLeft","current","pstartIndex","scrollOffsetargs","transform","debounceFunction","focusElement","activeElement","destroy","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","virtualList","DropDownBase","options","preventChange","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","virtualSelectAll","isVirtualReorder","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","isDynamicData","isPrimitiveData","isCustomFiltering","debounceTimer","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","checkValueCase","isTextByValue","fields_1","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","ulElement","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","compile","templateName","noDataElement","isStringTemplate","nodeName","liElem","HTMLElement","Text","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","checkAndResetCache","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","getFilteringSkeletonCount","currentSkeletonCount","skeletonUpdated","abs","retainSkeleton","listContainerHeight","parseInt","actualCount","heightDimension","translateY","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","liElement","itemTemplate","window","getComputedStyle","marginBottom","skeleton","Skeleton","shape","width","cssClass","appendTo","firstChild","insertBefore","el","getTextByValue","properties","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","extend","htmlAttributes","isSelectGroupCheck","isGroupChecking","option","getJSONfromOption","optionGroup","child","updateFields","iconCss","field","category","options_1","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","eventArgs","cancel","isAngular","trigger","showSpinner","isWhereExist_1","emptyDataRequest","executeQuery","getQuery","isReOrder","queryElements","count","nos","condition","operator","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","isSetCurrentcall","notify","module","preventSkeleton","updatePopupPosition","virtualSelectAllData","virtualSelectionAll","catch","onActionFailure","hideSpinner","virtualGroupDataSource","executeLocal","records","dataManager","localDataArgs","childElementCount","updateDataList","updatePopupState","state","updateRemoteData","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","isObjectInArray","objectToFind","array","some","keys","every","findListElement","findNode","attribute","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","setStyleAttribute","zIndex","ngEle","popupHolder","prevHeight","offsetHeight","postRender","popupHolder_1","refreshPopup","listElement","sortOrder","JSON","parse","stringify","disableListItem","focusItem","selectedItem","elements","performFiltering","debouncedFiltering","debounceDelay","clearTimeout","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","createListItems","getSortedDataSource","fieldSet","groupDataSource","preventDefActionFilter","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","isDownkey","computedHeight","getValidLi","getPropertyValue","computedMarginValue","marginValue","liHeight","topIndex","virtualListCount","updateGroupHeader","returnExactCount","updateGroupFixedHeader","position","parentElement","offsetTop","scrollY","isCheckBoxUpdate","isClearAll","incrementalLiCollections","incrementalUlElement","incrementalListData","virtualUlElement","updateListElements","createVirtualContent","templateID","itemcheck","renderContentTemplate","borderWidth","defaultView","isNaN","liWidth","offsetWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getIndexByValueFilter","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","oldProps","setUpdateInitial","updateData","j","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","getScrollableParent","wrapperElement","eleStyle","scrollParents","overflowRegex","parentStyle","overflow","overflowY","overflowX","removeScrollEvent","addItem","itemIndex","newList","itemsCount","isListboxEmpty","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","isDisabledElement","isDisabledItemByIndex","validationAttribute","hidden","getDataByValue","_b","_c","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","resizeIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","isTouched","isFocused","autoFill","isUpdateHeaderHeight","isUpdateFooterHeight","isReactTemplateUpdate","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initialRemoteRender","isNotSearchList","isSelected","preventFocus","preventAutoFill","isValidKey","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","pageUp","pageDown","open","close","hide","space","requiredModules","modules","enableVirtualization","args","member","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","updateInitialData","onChangeEvent","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","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","listItems_1","liItem","initValue","updateValues","isDisableItemValue","objectValue","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resizingWireEvent","resizePopup","stopResizing","resizingUnWireEvent","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","windowResize","bindCommonEvent","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","startResizing","isResizing","clientX","MouseEvent","touches","clientY","originalWidth","originalHeight","originalMouseX","originalMouseY","dx","dy","minWidth","minHeight","resizeWidth","max","resizeHeight","maxHeight","isValidLI","history","back","closePopup","currentLi","setHover","hoveredItem","hasAttribute","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","enableLiCollections","spinnerElement","filterInputObj","createSpinner","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","selectedData","focusAtFirstElement","aria-activedescendant","findLi","steps","previousItem","validIndex","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","getItem","where","Predicate","previousSelectedLI","aria-describedby","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","isCustomValue","datas","foundIndex","findIndex","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","filterArgs","firstItem","searchLists","executeCloneElements","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","requiresCount","start","selectionStart","selectionEnd","preventDefaultAction","filteringAction","baseEventArgs","visibility","isNoData","cssText","virtualElement","focusIndexItem","setSearchBox","popupElement","isDeviceFullScreen","createInput","filterBarPlaceholder","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","outerHeight","updateActionCompleteDataValues","tempItemCount","aria-hidden","aria-label","value_1","checkVal","x","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_2","actionCompleteDataUpdate","findEle","highlightedItem","initialPopupHeight","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","clientHeight","listitems","searchBoxHeight","offsetValue","getOffsetValue","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","popupWidth","outerWidth","collision","X","Y","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","scrollHandler","selectedElementID","enable","scrollBottom","aria-owns","aria-controls","inputParent","animModel","popup","animation","destroyPopup","show","Animation","popupHeightValue","listHeight","allowResize","resizer","paddingBottom","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","isElementInViewport","elementRect","innerHeight","right","innerWidth","border","popupOffset","lastItem","isInitial","isInitialSelection","selectedListMargin","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","IsScrollerAtEnd","scrollHeight","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","fixedHeader","dataSourceCount","preselectedIndex","updatedCssClassValues","class","setReadOnly","calculateWidth","getListHeight","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","value_3","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","blur","disableItem","HTMLLIElement","parsedData","clear","attrArray","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","SHOW_TEXT","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","documentClickContext","isCheckAllCalled","isFromFilterChange","keyEntity","isFirstRender","isInitialized","currentText","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","destroyPopupOnHide","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","filterKeyAction","focusedElement","observedArgs","filterHandler","isChildObject","expandedNodes","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","remoteDataFilter","getTreeFields","nestedFilter","portals","filteredFields","map","remoteChildFilter","filteredChild","node","isChild","isChildFiltering","isMatchedNode","matchedChildren","filteredItems","matchedDataSource","nestedChildFilter","matchedData","parentId","parentValue","checkValue","tempChild","isIos","handleIosTouch","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","showSelectAll","clickHandler","isClearButtonClick","showOverAllClear","isValue","chipWrapper","showOrHideValueTemplate","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","isValueChange","keyEventArgs","resetValue","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","updateChipAndValueTemplate","checkRemainingTemplate","updateDelimMode","delimiterChar","getOverflowVal","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","textArr","join","updateRemainTemplate","isChip","previousHtmlContent","previousData","wrapperLength","remainingItemsCount","currentHtmlContent","valueTemplateContainer","clonedElement","valueElements","lastChild","getSelectedData","treeSettings","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","initializeValueTemplate","getValueTemplateElement","includes","reactCallBack","templateElements","getNodeData","autoCheck","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","checkDisabledChildren","checkOnClick","isCancelled","POPUP_CLASS","updatePopupHeight","oldFocussedNode","updateFocus","nodes","wrap","checkSelectAll","oldFocusedElement","getHeight","inputWidth","ddElement","documentElement","isFilter","isFooter","isScroller","getTreeDataType","expandAll","restoreFilterSelection","setEnableRTL","cloneChildField","hasChildren","expanded","imageUrl","selectable","tableName","tooltip","parentID","getTreeChildren","isChecked","childFields","getActualProperties","ds","len","updateTemplate","updateValue","getEventArgs","nodeData","getNode","removeSelectedData","updateClearButton","nextSibling","chipClose","updateDropDownIconState","spinIcon","appendSpan","isValid","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","selectedValue","nodeSelectedData","ddtValue","checkSelection","getChildNodeData","obj","newChildItems","getChildMapperFields","childNodeData","muteOnChange","templateComplier","showChip","textValue","hiddenInputValue","setChipValues","setTagValues","chip","data-value","chipContent","CHIP_CLOSE","removeChip","tempArr","setSelectAllWrapper","updateOverflowWrapper","stopPropagation","clearCheckAll","selectAllItems","arr","updateTreeSettings","updateCheckBoxState","checkBox","noRecord","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateText","updateModelMode","overFlow","prop_1","setRipple","chipsIcons_1","ensureVisible","getData","ComboBox","preventBlur","targetFocus","inputValue","customValue","valueMuteChange","changeData","isvalidTextField_1","isValidValue_1","doesItemExist","currentValue_1","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","isEndIndexValid","isIncrementalEndIndexZero","min","startIndex_1","endIndex_1","dataItem_1","virtualListInfoStartIndex","selectedLiOffsetTopWithStartIndex","scrollTopOffset","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","currentTakeValue","currentQueryTakeValue","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","itemCreated_1","showPopupButton","checkFields1_1","_this_2","atcProps","isHighlight","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","storedSelectAllHeight","isBlurDispatching","isFilterPrevented","isFilteringAction","selectAllEventData","selectAllEventEle","isSelectAllLoop","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","selectedListData","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","removeSelectedChip","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","predicate","startindex","endindex","or","isaddNonPresentItems","and","adaptor","JsonAdaptor","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","remoteCustomValue","disableGroupHeader","mainData","mainListCollection","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","isRemoveSelection","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","virtualFilterQuery","isClearAllAction","isSkip","backCommand","isReordered","setResize","dataChecks","customData","random","emptyObject_1","isNumberType_1","tempCount","isRemoteSelection","wrapperClick","checkAndScrollParent","scrollElement","scrollElementStyle","scrollElmentHeight","wrapperBottom","scrollElementBottom","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","collection","previousFocusItem","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","codePoint","sizeMultiplier","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","arrowDown","arrowUp","onKeyDown","altKey","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","liItems","isScrollerAtEnd","limit","isFilterData","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","updateCheck","isVirtualElement","elementIndex","focusedLi","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","currentRemoveValue","hideElement","currentValue_2","targetEle_1","isSelectAllTarget","clearAllCallback","element2","addValue","updateWrapperText","textValues","addListSelection","addChip","activeItems","inactiveItems","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","isClearAllItem","preventSelection","textVal","isInitialVirtualData","delim","out_index_1","valueLength","hiddenElementContent","state_2","valueItem","listValue","isDynamicRemoteVirtualData","item_1","isChipRemove","addValidInputClass","removeListSelection","isCustomData","indexItem","noDataEle","isDynamicGroupItemUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","visibleListElements","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","isDisabled","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","firstItems","fragment_1","createDocumentFragment","concatenatedNodeList","updatedataValueItems","updateHiddenElement","beforeSelectArgs","preventSelectEvent","index_1","count_1","isVirtualSelectAll","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","removeDisabledItemsValue","dropDownIcon","reInitializePoup","msProps","checkvalue","isInitRemoteVirtualData","typedValue","boxSizing","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","headerElem","headerTemplateHeight","minWidth_1","minHeight_1","dataIndex","indexValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","listItems_2","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","boundPreventListSelection","preventListSelection","footerHeight","headerHeight","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isBackSpace","isDataSourceUpdate","ListBox_1","jsonData","originalElement","inputString","initLoad","initialSelectedOptions","inputFormName","initWrapper","hiddenSelect","groupHdrs","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","beforeDragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","filterElem","txtLength","noRecElem","filterWireEvents","inputSearch","isRendered","initToolbarAndStyles","setCheckboxPosition","setFiltering","badge","extendedArgs","getDragArgs","dragSelected","dragEventArgs","allowDragAll","scrollParent","boundRect","stopTimer","timer","setInterval","setScrollDown","scrollElem","scrollPixel","isScrollDown","clearInterval","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getArgs","sourceArgs","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","canDisable_1","getSelectedItems","updateSelectedOptions","selElems","triggerChange","addItems","removeItems","removeItem","objValue","dupData","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","toolbarAction","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","ulList","mainCount","ulEleCount","listindex","valueindex","form","keyDownHandler","focusOutHandler","wireToolbarEvent","formResetHandler","resizeHandler","getToolElem","toolbarClickHandler","unwireEvents","clearFilterIconElem","selectHandler","autocorrect","setProperty","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","prevSelIdx","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","formattedValue","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","eData_1","ulChildren_1","lData_1","sData_1","jData_1","listDataMap_1","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","tempLiColl","flistboxarray","Number","newFlistboxArray","disabledData_1","obj1","obj2","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","char","isWordAccentCharacter","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","canFocus","liselect","txt","CSS","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","requireLeadingSpace","initRemoteRender","isListResetted","isCollided","lineBreak","isRTE","keyEventName","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isKeyAction","getLastLetter","getTextRange","isUpDownKey","rangetextContent","isRteImage","range","getCurrentRange","startContainer","currentRange","mentionRegex","lastWordRange","previousChar","charAt","lastTwoLetters","Regex","charRegex","isMatchedText","substring","lastIndexOf","startOffset","endOffset","deleteContents","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startPos","words","popupEle_1","rteRootElement","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","collapse","getClientRects","rectTop","rectLeft","iframes","iframe","contentDocument","iframeRect","doc","windowLeft","pageXOffset","clientLeft","windowTop","pageYOffset","clientTop","Node","TEXT_NODE","span_1","textNodeWidth","fontSize","offsetLeft","isSelectCancel","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","endPos","textSuffix","mentionVal","commonAncestorContainer","frag","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","pointerType","event_1","CustomEvent","detail","click","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","Inject","index.VirtualScroll","index.CheckBoxSelection"],"mappings":"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,4BAAyB,IACpDiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,qBAAkB,IAC7CiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,0BAAuB,IAClDiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,mBAAgB,IAC3CiV,GACIY,WAAS,KACV43B,EAAaztC,UAAW,eAAY,IACvCiV,GACIY,WAAS,qCACV43B,EAAaztC,UAAW,qBAAkB,IAC7CiV,GACIY,WAAS,MACV43B,EAAaztC,UAAW,oBAAiB,IAC5CiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,cAAW,IACtCiV,GACIiZ,aAAYqf,KACbE,EAAaztC,UAAW,aAAU,IACrCiV,GACIY,WAAS,OACV43B,EAAaztC,UAAW,2BAAwB,IACnDiV,GACIY,WAAS,eACV43B,EAAaztC,UAAW,iBAAc,IACzCiV,GACIY,WAAS,UACV43B,EAAaztC,UAAW,qBAAkB,IAC7CiV,GACIY,WAAS,OACV43B,EAAaztC,UAAW,qBAAkB,IAC7CiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,mBAAgB,IAC3CiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,iBAAc,IACzCiV,GACIY,WAAS,OACV43B,EAAaztC,UAAW,qBAAkB,IAC7CiV,GACIY,gBACD43B,EAAaztC,UAAW,qBAAkB,IAC7CiV,GACIY,WAAS,OACV43B,EAAaztC,UAAW,mBAAgB,IAC3CiV,GACIY,WAAS,YACV43B,EAAaztC,UAAW,WAAQ,IACnCiV,GACIY,WAAS,qBACV43B,EAAaztC,UAAW,wBAAqB,IAChDiV,GACIY,WAAS,OACV43B,EAAaztC,UAAW,kBAAe,IAC1CiV,GACIY,WAAS,UACV43B,EAAaztC,UAAW,kBAAe,IAC1CiV,GACIY,WAAS,SACV43B,EAAaztC,UAAW,iBAAc,IACzCiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,eAAY,IACvCiV,GACIY,YAAS,IACV43B,EAAaztC,UAAW,oBAAiB,IAC5CiV,GACIY,WAAS,eACV43B,EAAaztC,UAAW,oBAAiB,IAC5CiV,GACIY,YAAS,IACV43B,EAAazt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"}