@syncfusion/ej2-dropdowns 29.2.11-81740 → 29.2.11

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/.eslintrc.json +261 -0
  2. package/{ReadMe.md → README.md} +217 -217
  3. package/dist/ej2-dropdowns.min.js +10 -0
  4. package/dist/ej2-dropdowns.umd.min.js +10 -1
  5. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es2015.js +69 -80
  7. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  8. package/dist/es6/ej2-dropdowns.es5.js +226 -237
  9. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  10. package/dist/global/ej2-dropdowns.min.js +11 -0
  11. package/dist/global/ej2-dropdowns.min.js.map +1 -0
  12. package/dist/global/index.d.ts +14 -0
  13. package/helpers/e2e/autocomplete.d.ts +16 -0
  14. package/helpers/e2e/autocomplete.js +60 -0
  15. package/helpers/e2e/combobox.d.ts +17 -0
  16. package/helpers/e2e/combobox.js +63 -0
  17. package/helpers/e2e/dropdownlist.d.ts +20 -0
  18. package/helpers/e2e/dropdownlist.js +72 -0
  19. package/helpers/e2e/index.d.ts +4 -0
  20. package/helpers/e2e/index.js +11 -0
  21. package/helpers/e2e/listboxHelper.d.ts +22 -0
  22. package/helpers/e2e/listboxHelper.js +56 -0
  23. package/helpers/e2e/multiselect.d.ts +31 -0
  24. package/helpers/e2e/multiselect.js +105 -0
  25. package/license +2 -2
  26. package/package.json +36 -36
  27. package/src/auto-complete/auto-complete-model.d.ts +190 -190
  28. package/src/auto-complete/auto-complete.d.ts +12 -12
  29. package/src/auto-complete/auto-complete.js +21 -21
  30. package/src/combo-box/combo-box-model.d.ts +232 -232
  31. package/src/combo-box/combo-box.d.ts +26 -26
  32. package/src/combo-box/combo-box.js +29 -29
  33. package/src/common/incremental-search.js +1 -1
  34. package/src/common/virtual-scroll.js +46 -46
  35. package/src/drop-down-base/drop-down-base-model.d.ts +205 -205
  36. package/src/drop-down-base/drop-down-base.d.ts +15 -15
  37. package/src/drop-down-base/drop-down-base.js +20 -20
  38. package/src/drop-down-list/drop-down-list-model.d.ts +310 -310
  39. package/src/drop-down-list/drop-down-list.d.ts +5 -5
  40. package/src/drop-down-list/drop-down-list.js +21 -21
  41. package/src/drop-down-tree/drop-down-tree-model.d.ts +493 -493
  42. package/src/drop-down-tree/drop-down-tree.d.ts +1 -1
  43. package/src/drop-down-tree/drop-down-tree.js +19 -19
  44. package/src/list-box/list-box-model.d.ts +237 -237
  45. package/src/list-box/list-box.d.ts +2 -2
  46. package/src/list-box/list-box.js +19 -19
  47. package/src/mention/mention-model.d.ts +272 -272
  48. package/src/mention/mention.d.ts +1 -1
  49. package/src/mention/mention.js +27 -29
  50. package/src/multi-select/multi-select-model.d.ts +564 -564
  51. package/src/multi-select/multi-select.d.ts +1 -1
  52. package/src/multi-select/multi-select.js +25 -34
  53. package/styles/auto-complete/_all.scss +1 -1
  54. package/styles/auto-complete/_bds-definition.scss +2 -2
  55. package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
  56. package/styles/auto-complete/_bootstrap-definition.scss +2 -2
  57. package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
  58. package/styles/auto-complete/_bootstrap5-definition.scss +2 -2
  59. package/styles/auto-complete/_bootstrap5.3-definition.scss +2 -2
  60. package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
  61. package/styles/auto-complete/_fabric-definition.scss +2 -2
  62. package/styles/auto-complete/_fluent-definition.scss +2 -2
  63. package/styles/auto-complete/_fluent2-definition.scss +2 -2
  64. package/styles/auto-complete/_fusionnew-definition.scss +2 -2
  65. package/styles/auto-complete/_highcontrast-definition.scss +2 -2
  66. package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
  67. package/styles/auto-complete/_material-dark-definition.scss +2 -2
  68. package/styles/auto-complete/_material-definition.scss +2 -2
  69. package/styles/auto-complete/_material3-definition.scss +2 -2
  70. package/styles/auto-complete/_tailwind-definition.scss +2 -2
  71. package/styles/auto-complete/_tailwind3-definition.scss +2 -2
  72. package/styles/auto-complete/material3-dark.scss +1 -1
  73. package/styles/auto-complete/material3.scss +1 -1
  74. package/styles/combo-box/_all.scss +1 -1
  75. package/styles/combo-box/_bds-definition.scss +2 -2
  76. package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
  77. package/styles/combo-box/_bootstrap-definition.scss +2 -2
  78. package/styles/combo-box/_bootstrap4-definition.scss +11 -11
  79. package/styles/combo-box/_bootstrap5-definition.scss +2 -2
  80. package/styles/combo-box/_bootstrap5.3-definition.scss +2 -2
  81. package/styles/combo-box/_fabric-dark-definition.scss +2 -2
  82. package/styles/combo-box/_fabric-definition.scss +2 -2
  83. package/styles/combo-box/_fluent-definition.scss +2 -2
  84. package/styles/combo-box/_fluent2-definition.scss +2 -2
  85. package/styles/combo-box/_fusionnew-definition.scss +2 -2
  86. package/styles/combo-box/_highcontrast-definition.scss +2 -2
  87. package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
  88. package/styles/combo-box/_material-dark-definition.scss +2 -2
  89. package/styles/combo-box/_material-definition.scss +2 -2
  90. package/styles/combo-box/_material3-definition.scss +2 -2
  91. package/styles/combo-box/_tailwind-definition.scss +2 -2
  92. package/styles/combo-box/_tailwind3-definition.scss +2 -2
  93. package/styles/combo-box/material3-dark.scss +1 -1
  94. package/styles/combo-box/material3.scss +1 -1
  95. package/styles/drop-down-base/_all.scss +2 -2
  96. package/styles/drop-down-base/_bds-definition.scss +112 -112
  97. package/styles/drop-down-base/_bigger.scss +198 -198
  98. package/styles/drop-down-base/_bootstrap-dark-definition.scss +80 -80
  99. package/styles/drop-down-base/_bootstrap-definition.scss +78 -78
  100. package/styles/drop-down-base/_bootstrap4-definition.scss +83 -83
  101. package/styles/drop-down-base/_bootstrap5-definition.scss +98 -98
  102. package/styles/drop-down-base/_bootstrap5.3-definition.scss +98 -98
  103. package/styles/drop-down-base/_definition.scss +23 -23
  104. package/styles/drop-down-base/_fabric-dark-definition.scss +81 -81
  105. package/styles/drop-down-base/_fabric-definition.scss +79 -79
  106. package/styles/drop-down-base/_fluent-definition.scss +102 -102
  107. package/styles/drop-down-base/_fluent2-definition.scss +113 -113
  108. package/styles/drop-down-base/_fusionnew-definition.scss +98 -98
  109. package/styles/drop-down-base/_highcontrast-definition.scss +96 -96
  110. package/styles/drop-down-base/_highcontrast-light-definition.scss +96 -96
  111. package/styles/drop-down-base/_layout.scss +148 -148
  112. package/styles/drop-down-base/_material-dark-definition.scss +82 -82
  113. package/styles/drop-down-base/_material-definition.scss +81 -81
  114. package/styles/drop-down-base/_material3-definition.scss +73 -73
  115. package/styles/drop-down-base/_tailwind-definition.scss +107 -107
  116. package/styles/drop-down-base/_tailwind3-definition.scss +98 -98
  117. package/styles/drop-down-base/_theme.scss +303 -303
  118. package/styles/drop-down-base/material3-dark.scss +1 -1
  119. package/styles/drop-down-base/material3.scss +1 -1
  120. package/styles/drop-down-list/_all.scss +3 -3
  121. package/styles/drop-down-list/_bds-definition.scss +100 -100
  122. package/styles/drop-down-list/_bigger.scss +713 -713
  123. package/styles/drop-down-list/_bootstrap-dark-definition.scss +94 -94
  124. package/styles/drop-down-list/_bootstrap-definition.scss +93 -93
  125. package/styles/drop-down-list/_bootstrap4-definition.scss +122 -122
  126. package/styles/drop-down-list/_bootstrap5-definition.scss +135 -135
  127. package/styles/drop-down-list/_bootstrap5.3-definition.scss +136 -136
  128. package/styles/drop-down-list/_fabric-dark-definition.scss +72 -72
  129. package/styles/drop-down-list/_fabric-definition.scss +69 -69
  130. package/styles/drop-down-list/_fluent-definition.scss +128 -128
  131. package/styles/drop-down-list/_fluent2-definition.scss +101 -101
  132. package/styles/drop-down-list/_fusionnew-definition.scss +134 -134
  133. package/styles/drop-down-list/_highcontrast-definition.scss +83 -83
  134. package/styles/drop-down-list/_highcontrast-light-definition.scss +85 -85
  135. package/styles/drop-down-list/_layout.scss +284 -284
  136. package/styles/drop-down-list/_material-dark-definition.scss +110 -110
  137. package/styles/drop-down-list/_material-definition.scss +112 -112
  138. package/styles/drop-down-list/_material3-definition.scss +114 -114
  139. package/styles/drop-down-list/_tailwind-definition.scss +100 -100
  140. package/styles/drop-down-list/_tailwind3-definition.scss +135 -135
  141. package/styles/drop-down-list/_theme.scss +17 -17
  142. package/styles/drop-down-list/icons/_bds.scss +14 -14
  143. package/styles/drop-down-list/icons/_bootstrap-dark.scss +18 -18
  144. package/styles/drop-down-list/icons/_bootstrap.scss +18 -18
  145. package/styles/drop-down-list/icons/_bootstrap4.scss +18 -18
  146. package/styles/drop-down-list/icons/_bootstrap5.3.scss +18 -18
  147. package/styles/drop-down-list/icons/_bootstrap5.scss +18 -18
  148. package/styles/drop-down-list/icons/_fabric-dark.scss +18 -18
  149. package/styles/drop-down-list/icons/_fabric.scss +18 -18
  150. package/styles/drop-down-list/icons/_fluent.scss +18 -18
  151. package/styles/drop-down-list/icons/_fluent2.scss +18 -18
  152. package/styles/drop-down-list/icons/_fusionnew.scss +14 -14
  153. package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
  154. package/styles/drop-down-list/icons/_highcontrast.scss +18 -18
  155. package/styles/drop-down-list/icons/_material-dark.scss +18 -18
  156. package/styles/drop-down-list/icons/_material.scss +18 -18
  157. package/styles/drop-down-list/icons/_material3.scss +18 -18
  158. package/styles/drop-down-list/icons/_tailwind.scss +18 -18
  159. package/styles/drop-down-list/icons/_tailwind3.scss +14 -14
  160. package/styles/drop-down-list/material3-dark.scss +1 -1
  161. package/styles/drop-down-list/material3.scss +1 -1
  162. package/styles/drop-down-tree/_all.scss +2 -2
  163. package/styles/drop-down-tree/_bds-definition.scss +74 -74
  164. package/styles/drop-down-tree/_bigger.scss +561 -561
  165. package/styles/drop-down-tree/_bootstrap-dark-definition.scss +81 -81
  166. package/styles/drop-down-tree/_bootstrap-definition.scss +81 -81
  167. package/styles/drop-down-tree/_bootstrap4-definition.scss +85 -85
  168. package/styles/drop-down-tree/_bootstrap5-definition.scss +73 -73
  169. package/styles/drop-down-tree/_bootstrap5.3-definition.scss +74 -74
  170. package/styles/drop-down-tree/_fabric-dark-definition.scss +81 -81
  171. package/styles/drop-down-tree/_fabric-definition.scss +81 -81
  172. package/styles/drop-down-tree/_fluent-definition.scss +78 -78
  173. package/styles/drop-down-tree/_fluent2-definition.scss +85 -85
  174. package/styles/drop-down-tree/_fusionnew-definition.scss +69 -69
  175. package/styles/drop-down-tree/_highcontrast-definition.scss +81 -81
  176. package/styles/drop-down-tree/_highcontrast-light-definition.scss +81 -81
  177. package/styles/drop-down-tree/_layout.scss +942 -942
  178. package/styles/drop-down-tree/_material-dark-definition.scss +82 -82
  179. package/styles/drop-down-tree/_material-definition.scss +84 -84
  180. package/styles/drop-down-tree/_material3-definition.scss +84 -84
  181. package/styles/drop-down-tree/_tailwind-definition.scss +74 -74
  182. package/styles/drop-down-tree/_tailwind3-definition.scss +75 -75
  183. package/styles/drop-down-tree/_theme.scss +135 -135
  184. package/styles/drop-down-tree/icons/_bds.scss +11 -11
  185. package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
  186. package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
  187. package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
  188. package/styles/drop-down-tree/icons/_bootstrap5.3.scss +11 -11
  189. package/styles/drop-down-tree/icons/_bootstrap5.scss +11 -11
  190. package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
  191. package/styles/drop-down-tree/icons/_fabric.scss +11 -11
  192. package/styles/drop-down-tree/icons/_fluent.scss +11 -11
  193. package/styles/drop-down-tree/icons/_fluent2.scss +14 -14
  194. package/styles/drop-down-tree/icons/_fusionnew.scss +11 -11
  195. package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
  196. package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
  197. package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
  198. package/styles/drop-down-tree/icons/_material.scss +11 -11
  199. package/styles/drop-down-tree/icons/_material3.scss +11 -11
  200. package/styles/drop-down-tree/icons/_tailwind-dark.scss +11 -11
  201. package/styles/drop-down-tree/icons/_tailwind.scss +11 -11
  202. package/styles/drop-down-tree/icons/_tailwind3.scss +11 -11
  203. package/styles/drop-down-tree/material3-dark.scss +1 -1
  204. package/styles/drop-down-tree/material3.scss +1 -1
  205. package/styles/list-box/_all.scss +2 -2
  206. package/styles/list-box/_bds-definition.scss +136 -136
  207. package/styles/list-box/_bigger.scss +190 -190
  208. package/styles/list-box/_bootstrap-dark-definition.scss +126 -126
  209. package/styles/list-box/_bootstrap-definition.scss +119 -119
  210. package/styles/list-box/_bootstrap4-definition.scss +126 -126
  211. package/styles/list-box/_bootstrap5-definition.scss +121 -121
  212. package/styles/list-box/_bootstrap5.3-definition.scss +123 -123
  213. package/styles/list-box/_fabric-dark-definition.scss +124 -124
  214. package/styles/list-box/_fabric-definition.scss +119 -119
  215. package/styles/list-box/_fluent-definition.scss +120 -120
  216. package/styles/list-box/_fluent2-definition.scss +121 -121
  217. package/styles/list-box/_fusionnew-definition.scss +111 -111
  218. package/styles/list-box/_highcontrast-definition.scss +119 -119
  219. package/styles/list-box/_highcontrast-light-definition.scss +124 -124
  220. package/styles/list-box/_layout.scss +496 -496
  221. package/styles/list-box/_material-dark-definition.scss +124 -124
  222. package/styles/list-box/_material-definition.scss +119 -119
  223. package/styles/list-box/_material3-definition.scss +119 -119
  224. package/styles/list-box/_tailwind-definition.scss +119 -119
  225. package/styles/list-box/_tailwind3-definition.scss +123 -123
  226. package/styles/list-box/_theme.scss +327 -327
  227. package/styles/list-box/icons/_bds.scss +25 -25
  228. package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
  229. package/styles/list-box/icons/_bootstrap.scss +25 -25
  230. package/styles/list-box/icons/_bootstrap4.scss +25 -25
  231. package/styles/list-box/icons/_bootstrap5.3.scss +25 -25
  232. package/styles/list-box/icons/_bootstrap5.scss +25 -25
  233. package/styles/list-box/icons/_fabric-dark.scss +25 -25
  234. package/styles/list-box/icons/_fabric.scss +25 -25
  235. package/styles/list-box/icons/_fluent.scss +25 -25
  236. package/styles/list-box/icons/_fluent2.scss +25 -25
  237. package/styles/list-box/icons/_fusionnew.scss +25 -25
  238. package/styles/list-box/icons/_highcontrast-light.scss +25 -25
  239. package/styles/list-box/icons/_highcontrast.scss +25 -25
  240. package/styles/list-box/icons/_material-dark.scss +25 -25
  241. package/styles/list-box/icons/_material.scss +25 -25
  242. package/styles/list-box/icons/_material3.scss +25 -25
  243. package/styles/list-box/icons/_tailwind-dark.scss +25 -25
  244. package/styles/list-box/icons/_tailwind.scss +25 -25
  245. package/styles/list-box/icons/_tailwind3.scss +25 -25
  246. package/styles/list-box/material3-dark.scss +1 -1
  247. package/styles/list-box/material3.scss +1 -1
  248. package/styles/material3-dark.scss +1 -1
  249. package/styles/material3.scss +1 -1
  250. package/styles/mention/_all.scss +1 -1
  251. package/styles/mention/_bds-definition.scss +1 -1
  252. package/styles/mention/_bootstrap-dark-definition.scss +3 -3
  253. package/styles/mention/_bootstrap-definition.scss +3 -3
  254. package/styles/mention/_bootstrap4-definition.scss +3 -3
  255. package/styles/mention/_bootstrap5-definition.scss +1 -1
  256. package/styles/mention/_bootstrap5.3-definition.scss +1 -1
  257. package/styles/mention/_fabric-dark-definition.scss +2 -2
  258. package/styles/mention/_fabric-definition.scss +3 -3
  259. package/styles/mention/_fluent-definition.scss +1 -1
  260. package/styles/mention/_fluent2-definition.scss +1 -1
  261. package/styles/mention/_fusionnew-definition.scss +1 -1
  262. package/styles/mention/_highcontrast-definition.scss +3 -3
  263. package/styles/mention/_highcontrast-light-definition.scss +3 -3
  264. package/styles/mention/_layout.scss +6 -6
  265. package/styles/mention/_material-dark-definition.scss +3 -3
  266. package/styles/mention/_material-definition.scss +3 -3
  267. package/styles/mention/_material3-definition.scss +1 -1
  268. package/styles/mention/_tailwind-definition.scss +1 -1
  269. package/styles/mention/_tailwind3-definition.scss +1 -1
  270. package/styles/mention/material3-dark.scss +1 -1
  271. package/styles/mention/material3.scss +1 -1
  272. package/styles/multi-select/_all.scss +2 -2
  273. package/styles/multi-select/_bds-definition.scss +231 -231
  274. package/styles/multi-select/_bigger.scss +2002 -2002
  275. package/styles/multi-select/_bootstrap-dark-definition.scss +198 -198
  276. package/styles/multi-select/_bootstrap-definition.scss +187 -187
  277. package/styles/multi-select/_bootstrap4-definition.scss +236 -236
  278. package/styles/multi-select/_bootstrap5-definition.scss +229 -229
  279. package/styles/multi-select/_bootstrap5.3-definition.scss +229 -229
  280. package/styles/multi-select/_fabric-dark-definition.scss +190 -190
  281. package/styles/multi-select/_fabric-definition.scss +181 -181
  282. package/styles/multi-select/_fluent-definition.scss +236 -236
  283. package/styles/multi-select/_fluent2-definition.scss +234 -234
  284. package/styles/multi-select/_fusionnew-definition.scss +222 -222
  285. package/styles/multi-select/_highcontrast-definition.scss +302 -302
  286. package/styles/multi-select/_highcontrast-light-definition.scss +296 -296
  287. package/styles/multi-select/_layout.scss +1335 -1335
  288. package/styles/multi-select/_material-dark-definition.scss +248 -248
  289. package/styles/multi-select/_material-definition.scss +250 -250
  290. package/styles/multi-select/_material3-definition.scss +233 -233
  291. package/styles/multi-select/_tailwind-definition.scss +231 -231
  292. package/styles/multi-select/_tailwind3-definition.scss +227 -227
  293. package/styles/multi-select/_theme.scss +564 -564
  294. package/styles/multi-select/icons/_bds.scss +26 -26
  295. package/styles/multi-select/icons/_bootstrap-dark.scss +30 -30
  296. package/styles/multi-select/icons/_bootstrap.scss +30 -30
  297. package/styles/multi-select/icons/_bootstrap4.scss +32 -32
  298. package/styles/multi-select/icons/_bootstrap5.3.scss +30 -30
  299. package/styles/multi-select/icons/_bootstrap5.scss +30 -30
  300. package/styles/multi-select/icons/_fabric-dark.scss +30 -30
  301. package/styles/multi-select/icons/_fabric.scss +30 -30
  302. package/styles/multi-select/icons/_fluent.scss +38 -38
  303. package/styles/multi-select/icons/_fluent2.scss +347 -347
  304. package/styles/multi-select/icons/_fusionnew.scss +26 -26
  305. package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
  306. package/styles/multi-select/icons/_highcontrast.scss +30 -30
  307. package/styles/multi-select/icons/_material-dark.scss +348 -348
  308. package/styles/multi-select/icons/_material.scss +348 -348
  309. package/styles/multi-select/icons/_material3.scss +350 -350
  310. package/styles/multi-select/icons/_tailwind.scss +30 -30
  311. package/styles/multi-select/icons/_tailwind3.scss +26 -26
  312. package/styles/multi-select/material3-dark.scss +1 -1
  313. package/styles/multi-select/material3.scss +1 -1
  314. package/tslint.json +111 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ej2-dropdowns.min.js","sources":["../../src/common/incremental-search.js","../../src/common/highlight-search.js","../../src/multi-select/float-label.js","../../src/common/virtual-scroll.js","../../src/drop-down-base/drop-down-base.js","../../src/drop-down-list/drop-down-list.js","../../src/drop-down-tree/drop-down-tree.js","../../src/combo-box/combo-box.js","../../src/auto-complete/auto-complete.js","../../src/multi-select/multi-select.js","../../src/multi-select/checkbox-selection.js","../../src/list-box/list-box.js","../../src/mention/mention.js","../../src/global.js"],"sourcesContent":["/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content.\n *\n * @param {number} keyCode - Specifies the key code which pressed on keyboard events.\n * @param {HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param {number} selectedIndex - Specifies the selected item in list item, so that search will happen 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' && !this.isVirtualReorder && !isContainSkeleton.firstChild.classList.contains('e-reorder')) {\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 if ((_this.previousFilterText && _this.previousFilterText !== '' && args.text !== '' && _this.previousFilterText.indexOf(args.text) !== -1) ||\n (args.text && args.text !== '' && _this.previousFilterText !== '' && args.text.indexOf(_this.previousFilterText) !== -1)) {\n _this.isFilterRestore = true;\n }\n _this.previousFilterText = args.text;\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.UpdateSkeleton();\n this.isVirtualReorder = false;\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 ? this.enableVirtualization ?\n this.getVirtualDataByValue(this.getFormattedValue(value)) :\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 var isContainsValue = valuecheck.some(function (item) { return item !== null; });\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && isContainsValue) {\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.skip(0).take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.skip(0).take(this.maximumSelectionLength).requiresCount() :\n new Query().skip(0).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.skip(0).take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.skip(0).take(this.maximumSelectionLength).requiresCount() :\n new Query().skip(0).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 if (this.list && this.list.querySelector('.e-list-parent.e-ul.e-reorder')) {\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 (elements.length > 0) {\n this.focusFirstListItem = !isNullOrUndefined(elements[0]) ? elements[0].classList.contains('e-item-focus') :\n false;\n }\n }\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 || position === 1) && 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') && !(position === 1 && this.list.querySelector('.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.getVirtualDataByValue = function (value) {\n if (!isNullOrUndefined(this.selectedListData)) {\n var type = this.typeOfData(this.selectedListData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.selectedListData; _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.selectedListData; _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 MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.enableVirtualization ?\n this.getVirtualDataByValue(this.getFormattedValue(customVal)) :\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.selectedListData) {\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.allowObjectBinding ? [value] : [(_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.allowObjectBinding ? value :\n (_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, _this.allowObjectBinding ? value :\n (_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 ((this.allowObjectBinding && !this.isObjectInArray(listItems[i], this.selectedListData)) ||\n !this.allowObjectBinding) {\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 }\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.selectedListData = [];\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 var _this = this;\n if (!this.list) {\n this.onLoadSelect();\n if (this.enableVirtualization) {\n this.setProperties({ text: '' }, true);\n this.selectedListData = [];\n this.checkInitialValue();\n }\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 var isContainsValue = valuecheck.some(function (item) { return item !== null; });\n if (prop === 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && isContainsValue) {\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 if (this.allowObjectBinding && !isContainsValue && this.value && this.value.length) {\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 var listItems_2 = e.result;\n _this.isDynamicRemoteVirtualData = true;\n setTimeout(function () {\n _this.initialValueUpdate(listItems_2, true);\n _this.isDynamicRemoteVirtualData = false;\n _this.initialUpdate();\n }, 100);\n }\n });\n }\n }\n else {\n this.isDynamicRemoteVirtualData = true;\n this.initialValueUpdate(this.listData, true);\n this.isDynamicRemoteVirtualData = false;\n this.initialUpdate();\n }\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_3;\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_3 = e.result;\n _this.initStatus = false;\n _this.isInitRemoteVirtualData = true;\n setTimeout(function () {\n _this.initialValueUpdate(listItems_3, true);\n _this.initialUpdate();\n _this.isInitRemoteVirtualData = false;\n }, 100);\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_3 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_3, 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_3);\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","previousFilterText","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","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","getVirtualDataByValue","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","predicate","startindex","endindex","or","isaddNonPresentItems","and","adaptor","JsonAdaptor","presentItemValue","isContainsValue","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","listItems_2","checkInitialValue","typedValue","boxSizing","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","headerElem","headerTemplateHeight","minWidth_1","minHeight_1","dataIndex","indexValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","listItems_3","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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"}