@syncfusion/ej2-dropdowns 25.2.4 → 25.2.5-30068

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 (417) hide show
  1. package/CHANGELOG.md +2186 -2164
  2. package/{README.md → ReadMe.md} +217 -217
  3. package/dist/ej2-dropdowns.umd.min.js +1 -10
  4. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-dropdowns.es2015.js +113 -80
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +270 -237
  8. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  9. package/helpers/e2e/autocomplete.js +13 -13
  10. package/helpers/e2e/combobox.js +13 -13
  11. package/helpers/e2e/dropdownlist.js +13 -13
  12. package/helpers/e2e/index.js +3 -3
  13. package/helpers/e2e/listboxHelper.js +13 -13
  14. package/helpers/e2e/multiselect.js +13 -13
  15. package/license +2 -2
  16. package/package.json +80 -80
  17. package/src/auto-complete/auto-complete-model.d.ts +190 -190
  18. package/src/auto-complete/auto-complete.d.ts +12 -12
  19. package/src/auto-complete/auto-complete.js +21 -21
  20. package/src/combo-box/combo-box-model.d.ts +233 -233
  21. package/src/combo-box/combo-box.d.ts +27 -27
  22. package/src/combo-box/combo-box.js +29 -29
  23. package/src/common/virtual-scroll.js +46 -46
  24. package/src/drop-down-base/drop-down-base-model.d.ts +200 -200
  25. package/src/drop-down-base/drop-down-base.d.ts +17 -18
  26. package/src/drop-down-base/drop-down-base.js +42 -32
  27. package/src/drop-down-list/drop-down-list-model.d.ts +209 -209
  28. package/src/drop-down-list/drop-down-list.d.ts +5 -5
  29. package/src/drop-down-list/drop-down-list.js +51 -29
  30. package/src/drop-down-tree/drop-down-tree-model.d.ts +473 -473
  31. package/src/drop-down-tree/drop-down-tree.d.ts +1 -1
  32. package/src/drop-down-tree/drop-down-tree.js +21 -21
  33. package/src/list-box/list-box-model.d.ts +237 -237
  34. package/src/list-box/list-box.d.ts +2 -2
  35. package/src/list-box/list-box.js +19 -19
  36. package/src/mention/mention-model.d.ts +261 -261
  37. package/src/mention/mention.js +19 -19
  38. package/src/multi-select/float-label.js +1 -0
  39. package/src/multi-select/multi-select-model.d.ts +526 -526
  40. package/src/multi-select/multi-select.js +20 -20
  41. package/styles/auto-complete/_all.scss +1 -1
  42. package/styles/auto-complete/_bds-definition.scss +2 -2
  43. package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
  44. package/styles/auto-complete/_bootstrap-definition.scss +2 -2
  45. package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
  46. package/styles/auto-complete/_bootstrap5-definition.scss +2 -2
  47. package/styles/auto-complete/_bootstrap5.3-definition.scss +2 -0
  48. package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
  49. package/styles/auto-complete/_fabric-definition.scss +2 -2
  50. package/styles/auto-complete/_fluent-definition.scss +2 -2
  51. package/styles/auto-complete/_fluent2-definition.scss +2 -0
  52. package/styles/auto-complete/_fusionnew-definition.scss +2 -2
  53. package/styles/auto-complete/_highcontrast-definition.scss +2 -2
  54. package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
  55. package/styles/auto-complete/_material-dark-definition.scss +2 -2
  56. package/styles/auto-complete/_material-definition.scss +2 -2
  57. package/styles/auto-complete/_material3-definition.scss +2 -2
  58. package/styles/auto-complete/_tailwind-definition.scss +2 -2
  59. package/styles/auto-complete/fluent2.css +1129 -0
  60. package/styles/auto-complete/fluent2.scss +4 -0
  61. package/styles/auto-complete/material3-dark.css +1 -1
  62. package/styles/auto-complete/material3-dark.scss +1 -1
  63. package/styles/auto-complete/material3.css +1 -1
  64. package/styles/auto-complete/material3.scss +1 -1
  65. package/styles/bootstrap-dark.css +72 -300
  66. package/styles/bootstrap-dark.scss +28 -8
  67. package/styles/bootstrap.css +72 -306
  68. package/styles/bootstrap.scss +28 -8
  69. package/styles/bootstrap4.css +72 -350
  70. package/styles/bootstrap4.scss +28 -8
  71. package/styles/bootstrap5-dark.css +72 -301
  72. package/styles/bootstrap5-dark.scss +28 -8
  73. package/styles/bootstrap5.css +72 -301
  74. package/styles/bootstrap5.scss +28 -8
  75. package/styles/combo-box/_all.scss +1 -1
  76. package/styles/combo-box/_bds-definition.scss +2 -2
  77. package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
  78. package/styles/combo-box/_bootstrap-definition.scss +2 -2
  79. package/styles/combo-box/_bootstrap4-definition.scss +11 -11
  80. package/styles/combo-box/_bootstrap5-definition.scss +2 -2
  81. package/styles/combo-box/_bootstrap5.3-definition.scss +2 -0
  82. package/styles/combo-box/_fabric-dark-definition.scss +2 -2
  83. package/styles/combo-box/_fabric-definition.scss +2 -2
  84. package/styles/combo-box/_fluent-definition.scss +2 -2
  85. package/styles/combo-box/_fluent2-definition.scss +2 -0
  86. package/styles/combo-box/_fusionnew-definition.scss +2 -2
  87. package/styles/combo-box/_highcontrast-definition.scss +2 -2
  88. package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
  89. package/styles/combo-box/_material-dark-definition.scss +2 -2
  90. package/styles/combo-box/_material-definition.scss +2 -2
  91. package/styles/combo-box/_material3-definition.scss +2 -2
  92. package/styles/combo-box/_tailwind-definition.scss +2 -2
  93. package/styles/combo-box/fluent2.css +1129 -0
  94. package/styles/combo-box/fluent2.scss +4 -0
  95. package/styles/combo-box/material3-dark.css +1 -1
  96. package/styles/combo-box/material3-dark.scss +1 -1
  97. package/styles/combo-box/material3.css +1 -1
  98. package/styles/combo-box/material3.scss +1 -1
  99. package/styles/drop-down-base/_all.scss +2 -2
  100. package/styles/drop-down-base/_bds-definition.scss +134 -134
  101. package/styles/drop-down-base/_bootstrap-dark-definition.scss +83 -83
  102. package/styles/drop-down-base/_bootstrap-definition.scss +83 -83
  103. package/styles/drop-down-base/_bootstrap4-definition.scss +90 -90
  104. package/styles/drop-down-base/_bootstrap5-definition.scss +117 -117
  105. package/styles/drop-down-base/_bootstrap5.3-definition.scss +117 -0
  106. package/styles/drop-down-base/_definition.scss +23 -23
  107. package/styles/drop-down-base/_fabric-dark-definition.scss +86 -86
  108. package/styles/drop-down-base/_fabric-definition.scss +84 -84
  109. package/styles/drop-down-base/_fluent-definition.scss +121 -121
  110. package/styles/drop-down-base/_fluent2-definition.scss +134 -0
  111. package/styles/drop-down-base/_fusionnew-definition.scss +117 -117
  112. package/styles/drop-down-base/_highcontrast-definition.scss +105 -105
  113. package/styles/drop-down-base/_highcontrast-light-definition.scss +105 -105
  114. package/styles/drop-down-base/_layout.scss +197 -187
  115. package/styles/drop-down-base/_material-dark-definition.scss +86 -86
  116. package/styles/drop-down-base/_material-definition.scss +85 -85
  117. package/styles/drop-down-base/_material3-definition.scss +76 -87
  118. package/styles/drop-down-base/_tailwind-definition.scss +129 -129
  119. package/styles/drop-down-base/_theme.scss +382 -391
  120. package/styles/drop-down-base/fluent2.css +1446 -0
  121. package/styles/drop-down-base/fluent2.scss +3 -0
  122. package/styles/drop-down-base/material3-dark.css +1 -1
  123. package/styles/drop-down-base/material3-dark.scss +1 -1
  124. package/styles/drop-down-base/material3.css +1 -1
  125. package/styles/drop-down-base/material3.scss +1 -1
  126. package/styles/drop-down-list/_all.scss +3 -3
  127. package/styles/drop-down-list/_bds-definition.scss +134 -134
  128. package/styles/drop-down-list/_bootstrap-dark-definition.scss +157 -157
  129. package/styles/drop-down-list/_bootstrap-definition.scss +156 -156
  130. package/styles/drop-down-list/_bootstrap4-definition.scss +202 -202
  131. package/styles/drop-down-list/_bootstrap5-definition.scss +201 -201
  132. package/styles/drop-down-list/_bootstrap5.3-definition.scss +201 -0
  133. package/styles/drop-down-list/_fabric-dark-definition.scss +128 -128
  134. package/styles/drop-down-list/_fabric-definition.scss +124 -124
  135. package/styles/drop-down-list/_fluent-definition.scss +185 -185
  136. package/styles/drop-down-list/_fluent2-definition.scss +134 -0
  137. package/styles/drop-down-list/_fusionnew-definition.scss +201 -201
  138. package/styles/drop-down-list/_highcontrast-definition.scss +142 -142
  139. package/styles/drop-down-list/_highcontrast-light-definition.scss +144 -144
  140. package/styles/drop-down-list/_layout.scss +317 -315
  141. package/styles/drop-down-list/_material-dark-definition.scss +143 -143
  142. package/styles/drop-down-list/_material-definition.scss +167 -167
  143. package/styles/drop-down-list/_material3-definition.scss +172 -180
  144. package/styles/drop-down-list/_tailwind-definition.scss +134 -134
  145. package/styles/drop-down-list/_theme.scss +10 -10
  146. package/styles/drop-down-list/bootstrap-dark.css +5 -0
  147. package/styles/drop-down-list/bootstrap.css +5 -0
  148. package/styles/drop-down-list/bootstrap4.css +5 -0
  149. package/styles/drop-down-list/bootstrap5-dark.css +5 -0
  150. package/styles/drop-down-list/bootstrap5.css +5 -0
  151. package/styles/drop-down-list/fabric-dark.css +5 -0
  152. package/styles/drop-down-list/fabric.css +5 -0
  153. package/styles/drop-down-list/fluent-dark.css +5 -0
  154. package/styles/drop-down-list/fluent.css +5 -0
  155. package/styles/drop-down-list/fluent2.css +1617 -0
  156. package/styles/drop-down-list/fluent2.scss +9 -0
  157. package/styles/drop-down-list/highcontrast-light.css +5 -0
  158. package/styles/drop-down-list/highcontrast.css +5 -0
  159. package/styles/drop-down-list/icons/_bds.scss +14 -14
  160. package/styles/drop-down-list/icons/_bootstrap-dark.scss +14 -14
  161. package/styles/drop-down-list/icons/_bootstrap.scss +14 -14
  162. package/styles/drop-down-list/icons/_bootstrap4.scss +14 -14
  163. package/styles/drop-down-list/icons/_bootstrap5.3.scss +14 -0
  164. package/styles/drop-down-list/icons/_bootstrap5.scss +14 -14
  165. package/styles/drop-down-list/icons/_fabric-dark.scss +14 -14
  166. package/styles/drop-down-list/icons/_fabric.scss +14 -14
  167. package/styles/drop-down-list/icons/_fluent.scss +14 -14
  168. package/styles/drop-down-list/icons/_fluent2.scss +14 -0
  169. package/styles/drop-down-list/icons/_fusionnew.scss +14 -14
  170. package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
  171. package/styles/drop-down-list/icons/_highcontrast.scss +14 -14
  172. package/styles/drop-down-list/icons/_material-dark.scss +14 -14
  173. package/styles/drop-down-list/icons/_material.scss +14 -14
  174. package/styles/drop-down-list/icons/_material3.scss +14 -14
  175. package/styles/drop-down-list/icons/_tailwind.scss +14 -14
  176. package/styles/drop-down-list/material-dark.css +5 -0
  177. package/styles/drop-down-list/material.css +5 -0
  178. package/styles/drop-down-list/material3-dark.css +6 -1
  179. package/styles/drop-down-list/material3-dark.scss +1 -1
  180. package/styles/drop-down-list/material3.css +6 -1
  181. package/styles/drop-down-list/material3.scss +1 -1
  182. package/styles/drop-down-list/tailwind-dark.css +5 -0
  183. package/styles/drop-down-list/tailwind.css +5 -0
  184. package/styles/drop-down-tree/_all.scss +2 -2
  185. package/styles/drop-down-tree/_bds-definition.scss +67 -61
  186. package/styles/drop-down-tree/_bootstrap-dark-definition.scss +73 -72
  187. package/styles/drop-down-tree/_bootstrap-definition.scss +72 -71
  188. package/styles/drop-down-tree/_bootstrap4-definition.scss +74 -72
  189. package/styles/drop-down-tree/_bootstrap5-definition.scss +66 -60
  190. package/styles/drop-down-tree/_bootstrap5.3-definition.scss +66 -0
  191. package/styles/drop-down-tree/_fabric-dark-definition.scss +73 -72
  192. package/styles/drop-down-tree/_fabric-definition.scss +73 -72
  193. package/styles/drop-down-tree/_fluent-definition.scss +71 -66
  194. package/styles/drop-down-tree/_fluent2-definition.scss +76 -0
  195. package/styles/drop-down-tree/_fusionnew-definition.scss +61 -60
  196. package/styles/drop-down-tree/_highcontrast-definition.scss +73 -72
  197. package/styles/drop-down-tree/_highcontrast-light-definition.scss +73 -72
  198. package/styles/drop-down-tree/_layout.scss +1389 -1423
  199. package/styles/drop-down-tree/_material-dark-definition.scss +74 -73
  200. package/styles/drop-down-tree/_material-definition.scss +74 -73
  201. package/styles/drop-down-tree/_material3-definition.scss +75 -76
  202. package/styles/drop-down-tree/_tailwind-definition.scss +67 -61
  203. package/styles/drop-down-tree/_theme.scss +130 -132
  204. package/styles/drop-down-tree/bootstrap-dark.css +20 -21
  205. package/styles/drop-down-tree/bootstrap.css +20 -21
  206. package/styles/drop-down-tree/bootstrap4.css +21 -22
  207. package/styles/drop-down-tree/bootstrap5-dark.css +20 -19
  208. package/styles/drop-down-tree/bootstrap5.css +20 -19
  209. package/styles/drop-down-tree/fabric-dark.css +20 -21
  210. package/styles/drop-down-tree/fabric.css +20 -21
  211. package/styles/drop-down-tree/fluent-dark.css +28 -27
  212. package/styles/drop-down-tree/fluent.css +28 -27
  213. package/styles/drop-down-tree/fluent2.css +1671 -0
  214. package/styles/drop-down-tree/fluent2.scss +9 -0
  215. package/styles/drop-down-tree/highcontrast-light.css +20 -21
  216. package/styles/drop-down-tree/highcontrast.css +20 -15
  217. package/styles/drop-down-tree/icons/_bds.scss +11 -11
  218. package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
  219. package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
  220. package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
  221. package/styles/drop-down-tree/icons/_bootstrap5.3.scss +11 -0
  222. package/styles/drop-down-tree/icons/_bootstrap5.scss +11 -11
  223. package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
  224. package/styles/drop-down-tree/icons/_fabric.scss +11 -11
  225. package/styles/drop-down-tree/icons/_fluent.scss +11 -11
  226. package/styles/drop-down-tree/icons/_fluent2.scss +14 -0
  227. package/styles/drop-down-tree/icons/_fusionnew.scss +11 -11
  228. package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
  229. package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
  230. package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
  231. package/styles/drop-down-tree/icons/_material.scss +11 -11
  232. package/styles/drop-down-tree/icons/_material3.scss +11 -11
  233. package/styles/drop-down-tree/icons/_tailwind-dark.scss +11 -11
  234. package/styles/drop-down-tree/icons/_tailwind.scss +11 -11
  235. package/styles/drop-down-tree/material-dark.css +28 -34
  236. package/styles/drop-down-tree/material.css +31 -40
  237. package/styles/drop-down-tree/material3-dark.css +17 -21
  238. package/styles/drop-down-tree/material3-dark.scss +1 -1
  239. package/styles/drop-down-tree/material3.css +17 -21
  240. package/styles/drop-down-tree/material3.scss +1 -1
  241. package/styles/drop-down-tree/tailwind-dark.css +29 -20
  242. package/styles/drop-down-tree/tailwind.css +29 -20
  243. package/styles/fabric-dark.css +72 -300
  244. package/styles/fabric-dark.scss +28 -8
  245. package/styles/fabric.css +72 -306
  246. package/styles/fabric.scss +28 -8
  247. package/styles/fluent-dark.css +80 -315
  248. package/styles/fluent-dark.scss +28 -8
  249. package/styles/fluent.css +80 -315
  250. package/styles/fluent.scss +28 -8
  251. package/styles/fluent2.css +4541 -0
  252. package/styles/fluent2.scss +28 -0
  253. package/styles/highcontrast-light.css +72 -300
  254. package/styles/highcontrast-light.scss +28 -8
  255. package/styles/highcontrast.css +72 -300
  256. package/styles/highcontrast.scss +28 -8
  257. package/styles/list-box/_all.scss +2 -2
  258. package/styles/list-box/_bds-definition.scss +136 -136
  259. package/styles/list-box/_bigger.scss +164 -0
  260. package/styles/list-box/_bootstrap-dark-definition.scss +124 -126
  261. package/styles/list-box/_bootstrap-definition.scss +119 -119
  262. package/styles/list-box/_bootstrap4-definition.scss +124 -124
  263. package/styles/list-box/_bootstrap5-definition.scss +121 -120
  264. package/styles/list-box/_bootstrap5.3-definition.scss +121 -0
  265. package/styles/list-box/_fabric-dark-definition.scss +124 -126
  266. package/styles/list-box/_fabric-definition.scss +119 -119
  267. package/styles/list-box/_fluent-definition.scss +120 -120
  268. package/styles/list-box/_fluent2-definition.scss +119 -0
  269. package/styles/list-box/_fusionnew-definition.scss +111 -111
  270. package/styles/list-box/_highcontrast-definition.scss +119 -119
  271. package/styles/list-box/_highcontrast-light-definition.scss +124 -126
  272. package/styles/list-box/_layout.scss +455 -546
  273. package/styles/list-box/_material-dark-definition.scss +124 -126
  274. package/styles/list-box/_material-definition.scss +119 -119
  275. package/styles/list-box/_material3-definition.scss +119 -119
  276. package/styles/list-box/_tailwind-definition.scss +119 -119
  277. package/styles/list-box/_theme.scss +314 -382
  278. package/styles/list-box/bootstrap-dark.css +43 -215
  279. package/styles/list-box/bootstrap.css +43 -221
  280. package/styles/list-box/bootstrap4.css +42 -264
  281. package/styles/list-box/bootstrap5-dark.css +43 -215
  282. package/styles/list-box/bootstrap5.css +43 -215
  283. package/styles/list-box/fabric-dark.css +43 -215
  284. package/styles/list-box/fabric.css +43 -221
  285. package/styles/list-box/fluent-dark.css +43 -221
  286. package/styles/list-box/fluent.css +43 -221
  287. package/styles/list-box/fluent2.css +1896 -0
  288. package/styles/list-box/fluent2.scss +5 -0
  289. package/styles/list-box/highcontrast-light.css +43 -215
  290. package/styles/list-box/highcontrast.css +43 -221
  291. package/styles/list-box/icons/_bds.scss +25 -25
  292. package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
  293. package/styles/list-box/icons/_bootstrap.scss +25 -25
  294. package/styles/list-box/icons/_bootstrap4.scss +25 -25
  295. package/styles/list-box/icons/_bootstrap5.3.scss +25 -0
  296. package/styles/list-box/icons/_bootstrap5.scss +25 -25
  297. package/styles/list-box/icons/_fabric-dark.scss +25 -25
  298. package/styles/list-box/icons/_fabric.scss +25 -25
  299. package/styles/list-box/icons/_fluent.scss +25 -25
  300. package/styles/list-box/icons/_fluent2.scss +25 -0
  301. package/styles/list-box/icons/_fusionnew.scss +25 -25
  302. package/styles/list-box/icons/_highcontrast-light.scss +25 -25
  303. package/styles/list-box/icons/_highcontrast.scss +25 -25
  304. package/styles/list-box/icons/_material-dark.scss +25 -25
  305. package/styles/list-box/icons/_material.scss +25 -25
  306. package/styles/list-box/icons/_material3.scss +25 -25
  307. package/styles/list-box/icons/_tailwind-dark.scss +25 -25
  308. package/styles/list-box/icons/_tailwind.scss +25 -25
  309. package/styles/list-box/material-dark.css +43 -215
  310. package/styles/list-box/material.css +43 -221
  311. package/styles/list-box/material3-dark.css +44 -216
  312. package/styles/list-box/material3-dark.scss +1 -1
  313. package/styles/list-box/material3.css +44 -216
  314. package/styles/list-box/material3.scss +1 -1
  315. package/styles/list-box/tailwind-dark.css +45 -233
  316. package/styles/list-box/tailwind.css +45 -233
  317. package/styles/material-dark.css +80 -325
  318. package/styles/material-dark.scss +28 -8
  319. package/styles/material.css +84 -354
  320. package/styles/material.scss +28 -8
  321. package/styles/material3-dark.css +79 -337
  322. package/styles/material3-dark.scss +28 -8
  323. package/styles/material3.css +79 -337
  324. package/styles/material3.scss +28 -8
  325. package/styles/mention/_all.scss +1 -1
  326. package/styles/mention/_bds-definition.scss +1 -1
  327. package/styles/mention/_bootstrap-dark-definition.scss +3 -3
  328. package/styles/mention/_bootstrap-definition.scss +3 -3
  329. package/styles/mention/_bootstrap4-definition.scss +3 -3
  330. package/styles/mention/_bootstrap5-definition.scss +1 -1
  331. package/styles/mention/_bootstrap5.3-definition.scss +1 -0
  332. package/styles/mention/_fabric-dark-definition.scss +2 -2
  333. package/styles/mention/_fabric-definition.scss +3 -3
  334. package/styles/mention/_fluent-definition.scss +1 -1
  335. package/styles/mention/_fluent2-definition.scss +1 -0
  336. package/styles/mention/_fusionnew-definition.scss +1 -1
  337. package/styles/mention/_highcontrast-definition.scss +3 -3
  338. package/styles/mention/_highcontrast-light-definition.scss +3 -3
  339. package/styles/mention/_layout.scss +6 -6
  340. package/styles/mention/_material-dark-definition.scss +3 -3
  341. package/styles/mention/_material-definition.scss +3 -3
  342. package/styles/mention/_material3-definition.scss +1 -1
  343. package/styles/mention/_tailwind-definition.scss +1 -1
  344. package/styles/mention/fluent2.css +1106 -0
  345. package/styles/mention/fluent2.scss +6 -0
  346. package/styles/mention/material3-dark.css +1 -1
  347. package/styles/mention/material3-dark.scss +1 -1
  348. package/styles/mention/material3.css +1 -1
  349. package/styles/mention/material3.scss +1 -1
  350. package/styles/multi-select/_all.scss +2 -2
  351. package/styles/multi-select/_bds-definition.scss +235 -235
  352. package/styles/multi-select/_bootstrap-dark-definition.scss +207 -207
  353. package/styles/multi-select/_bootstrap-definition.scss +196 -196
  354. package/styles/multi-select/_bootstrap4-definition.scss +278 -278
  355. package/styles/multi-select/_bootstrap5-definition.scss +230 -230
  356. package/styles/multi-select/_bootstrap5.3-definition.scss +230 -0
  357. package/styles/multi-select/_fabric-dark-definition.scss +192 -192
  358. package/styles/multi-select/_fabric-definition.scss +183 -183
  359. package/styles/multi-select/_fluent-definition.scss +246 -246
  360. package/styles/multi-select/_fluent2-definition.scss +237 -0
  361. package/styles/multi-select/_fusionnew-definition.scss +227 -227
  362. package/styles/multi-select/_highcontrast-definition.scss +303 -303
  363. package/styles/multi-select/_highcontrast-light-definition.scss +297 -297
  364. package/styles/multi-select/_layout.scss +2200 -2206
  365. package/styles/multi-select/_material-dark-definition.scss +241 -241
  366. package/styles/multi-select/_material-definition.scss +234 -234
  367. package/styles/multi-select/_material3-definition.scss +231 -246
  368. package/styles/multi-select/_tailwind-definition.scss +235 -235
  369. package/styles/multi-select/_theme.scss +585 -586
  370. package/styles/multi-select/bootstrap-dark.css +4 -10
  371. package/styles/multi-select/bootstrap.css +4 -10
  372. package/styles/multi-select/bootstrap4.css +4 -10
  373. package/styles/multi-select/bootstrap5-dark.css +4 -11
  374. package/styles/multi-select/bootstrap5.css +4 -11
  375. package/styles/multi-select/fabric-dark.css +4 -10
  376. package/styles/multi-select/fabric.css +4 -10
  377. package/styles/multi-select/fluent-dark.css +4 -11
  378. package/styles/multi-select/fluent.css +4 -11
  379. package/styles/multi-select/fluent2.css +2590 -0
  380. package/styles/multi-select/fluent2.scss +9 -0
  381. package/styles/multi-select/highcontrast-light.css +4 -10
  382. package/styles/multi-select/highcontrast.css +4 -10
  383. package/styles/multi-select/icons/_bds.scss +26 -26
  384. package/styles/multi-select/icons/_bootstrap-dark.scss +26 -26
  385. package/styles/multi-select/icons/_bootstrap.scss +26 -26
  386. package/styles/multi-select/icons/_bootstrap4.scss +37 -37
  387. package/styles/multi-select/icons/_bootstrap5.3.scss +26 -0
  388. package/styles/multi-select/icons/_bootstrap5.scss +26 -26
  389. package/styles/multi-select/icons/_fabric-dark.scss +26 -26
  390. package/styles/multi-select/icons/_fabric.scss +26 -26
  391. package/styles/multi-select/icons/_fluent.scss +55 -55
  392. package/styles/multi-select/icons/_fluent2.scss +692 -0
  393. package/styles/multi-select/icons/_fusionnew.scss +26 -26
  394. package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
  395. package/styles/multi-select/icons/_highcontrast.scss +26 -26
  396. package/styles/multi-select/icons/_material-dark.scss +693 -693
  397. package/styles/multi-select/icons/_material.scss +693 -693
  398. package/styles/multi-select/icons/_material3.scss +695 -692
  399. package/styles/multi-select/icons/_tailwind.scss +26 -26
  400. package/styles/multi-select/material-dark.css +4 -10
  401. package/styles/multi-select/material.css +5 -11
  402. package/styles/multi-select/material3-dark.css +15 -18
  403. package/styles/multi-select/material3-dark.scss +1 -1
  404. package/styles/multi-select/material3.css +15 -18
  405. package/styles/multi-select/material3.scss +1 -1
  406. package/styles/multi-select/tailwind-dark.css +4 -10
  407. package/styles/multi-select/tailwind.css +4 -10
  408. package/styles/tailwind-dark.css +83 -319
  409. package/styles/tailwind-dark.scss +28 -8
  410. package/styles/tailwind.css +83 -319
  411. package/styles/tailwind.scss +28 -8
  412. package/.eslintrc.json +0 -260
  413. package/dist/ej2-dropdowns.min.js +0 -10
  414. package/dist/global/ej2-dropdowns.min.js +0 -11
  415. package/dist/global/ej2-dropdowns.min.js.map +0 -1
  416. package/dist/global/index.d.ts +0 -14
  417. package/tslint.json +0 -111
@@ -1 +0,0 @@
1
- {"version":3,"file":"ej2-dropdowns.min.js","sources":["../../src/common/incremental-search.js","../../src/common/highlight-search.js","../../src/multi-select/float-label.js","../../src/common/virtual-scroll.js","../../src/drop-down-base/drop-down-base.js","../../src/drop-down-list/drop-down-list.js","../../src/drop-down-tree/drop-down-tree.js","../../src/combo-box/combo-box.js","../../src/auto-complete/auto-complete.js","../../src/multi-select/multi-select.js","../../src/multi-select/checkbox-selection.js","../../src/list-box/list-box.js","../../src/mention/mention.js","../../src/global.js"],"sourcesContent":["/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<span class=\"e-highlight\">$1</span>');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '<input placeholder=\"' + placeholder + '\"/>';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EventHandler, Browser, select, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var cHeight = _this.parent.popupContentElement.clientHeight;\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n }, axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function (e) {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n }\n else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = (totalData == this.parent.totalItemCount && this.parent.queryString != this.parent.typedString) ? true : this.parent.isCustomFilter;\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\n this.parent.isCustomFilter = tempCustomFilter;\n };\n VirtualScroll.prototype.removeSkipAndTakeEvents = function (query) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder) {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n isListUpdated = false;\n }\n else {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n isListUpdated = false;\n }\n else if (this.parent.viewPortInfo.startIndex != 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex != 0 && this.parent.viewPortInfo.startIndex - this.parent.value.length != this.parent.itemCount && (this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length)) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n }\n else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0 ? this.parent.viewPortInfo.startIndex - this.parent.value.length : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value && value != null && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex == this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.parent.value === null || (this.parent.value && this.parent.value.length === 0))) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length != this.parent.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.hideSelectedItem) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex == this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n }\n else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex == 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex == this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n var ulElement = this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n }\n this.parent.getSkeletonCount();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.parent.GetVirtualTrackHeight();\n }\n else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {\n var virualElement = this.parent.createElement('div', {\n id: this.parent.element.id + '_popup', className: 'e-virtual-ddl', styles: this.parent.GetVirtualTrackHeight()\n });\n this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.parent.UpdateSkeleton();\n this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.parent.getTransformValues();\n }\n if (this.parent.fields.groupBy) {\n this.parent.scrollStop();\n }\n if (this.parent.keyCode == 40 && this.parent.isScrollChanged && this.parent.hideSelectedItem && !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised && !((this.parent.totalItemCount == queryStartIndex) && (this.parent.totalItemCount == queryEndIndex))) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' && this.parent.hideSelectedItem && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' && this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) || (this.parent.dataSource instanceof DataManager && !this.parent.isRequesting)) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString != this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount != 0 && this.parent.totalItemCount < (this.parent.itemCount * 2) ? 0 : this.parent.skeletonCount;\n }\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null && (!(this.parent.dataSource instanceof DataManager) || (this.parent.dataSource instanceof DataManager && !this.parent.isRequesting))) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n var virtualListCount = this.parent.list.querySelectorAll('.e-virtual-list').length;\n var listElement = this.parent.list.querySelector('.' + 'e-list-item');\n var translateY = scrollArgs.offset.top - (listElement.offsetHeight * virtualListCount);\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style.transform = \"translate(0px,\" + translateY + \"px)\";\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement.getBoundingClientRect().height;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.virtualItemCount / 2 + pageSizeBy4)))\n && infoType.endIndex !== totalItemCount)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.virtualItemCount)\n : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount ? (infoType.endIndex - this.parent.virtualItemCount > 0 ? infoType.endIndex - this.parent.virtualItemCount : 0) : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n }\n else if (infoType.direction === 'up') {\n if (infoType.startIndex && infoType.endIndex) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex) {\n var idxAddedToExactTop = (pageSizeBy4) > infoViewIndices ? pageSizeBy4 :\n (infoViewIndices + infoViewIndices / 4);\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = (eIndex < totalItemCount || this.component == \"multiselect\") ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n }\n else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n var infoview = _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex != pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = \"translate(0px,\" + top + \"px)\";\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n 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.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count != 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) || (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.setListData(dataSource, fields, query, event);\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) && !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = this.list.parentElement.offsetTop + this.list.offsetTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value) {\n var index;\n var listItems = this.renderItems(this.dataSource, this.fields).querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData, oldProp);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ? this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index);\n isListboxEmpty = true;\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isTouched = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n 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.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] && this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 && this.fields.groupBy ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4);\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 e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 : this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() : this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ? (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" && !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '<option selected>' + this.text + '</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.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ? this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex != 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < filterQuery.queries.length; queryElements_1++) {\n if (filterQuery.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_1].e.nos;\n }\n if (filterQuery.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements_1].e.nos ? filterQuery.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < this.query.queries.length; queryElements_2++) {\n if (this.query.queries[queryElements_2].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_2].e.nos ? this.query.queries[queryElements_2].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_3 = 0; queryElements_3 < filterQuery.queries.length; queryElements_3++) {\n if (filterQuery.queries[queryElements_3].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n continue;\n }\n if (filterQuery.queries[queryElements_3].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements_3].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query.clone();\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = ((!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') || this.getInitialData) ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n if (!this.preventPopupOpen && this.getModuleName() === 'combobox') {\n this.beforePopupOpen = true;\n this.preventPopupOpen = true;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ? this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ? formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\n };\n ;\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (width.indexOf('px') > -1) && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n this.setProperties({ 'text': dataItem.text, 'value': value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex)) {\n newProp.index = this.preselectedIndex;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.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 (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.filterInput = null;\n this.inputWrapper = 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 }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * <input type=\"text\" id=\"tree\"></input>\n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n _this.isFromFilterChange = false;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n }\n else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n }\n else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNOU(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node, isChild, isChildFiltering)) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n }\n else {\n filteredItems.child = null;\n filteredItems = (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n 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 // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n 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 // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '', 'aria-label': this.getModuleName() }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT, 'aria-label': this.getModuleName() }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) { return !_this.portals.includes(item); }));\n }\n /* eslint-enable */\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = void 0;\n if (_this.value != null && _this.text != null) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement = _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[0] + '\"]');\n focusedElement.setAttribute('tabindex', '0');\n }\n else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li:not(.e-disable):not(.e-prevent)');\n if (oldFocussedNode && oldFocussedNode != focusedElement) {\n oldFocussedNode.setAttribute('tabindex', '-1');\n removeClass([oldFocussedNode], 'e-node-focus');\n }\n }\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n if (_this.treeObj.checkedNodes.length > 0) {\n var nodes = _this.treeObj.element.querySelectorAll('li');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if ((checkedNodes.length === nodes.length || _this.checkSelectAll) && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.reactCallBack = function () {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNOU(this.inputWrapper) && this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n 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])) || !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 || (!isNOU(args.data[0]) && args.data[0].isChecked === 'false'))) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && (args.isInteracted || this.isCheckAllCalled || (!isNOU(args.data[0]) && args.data[0].isChecked === 'true'))) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function (args) {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n /* eslint-enable */\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length === 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '<option selected value =\"' + this.value[i] + '\">' +\n this.selectedText[this.selectedText.length - 1] + '</option>';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n 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 // eslint-disable-next-line\n var e = void 0;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (this.value === [] && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property('${value.length} item(s) selected')\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <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 if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n }\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) || (this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) || (this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n var newValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) || (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) || (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) || (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) || (this.allowObjectBinding && ((previousValue == null && this.value !== null) || (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <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 defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue((this.fields.value) ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, 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';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var multiselectObj = new Multiselect();\n * multiselectObj.appendTo(\"#list\");\n * </script>\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.preventSetCurrentData = false;\n _this.isSelectAllLoop = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(value)) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'notequal', (value));\n }\n else {\n predicate = predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' && this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll) && ((!this.enableVirtualization) || (this.enableVirtualization && !this.virtualSelectAll))) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization && this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== \"\") || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ? this.query.take(this.maximumSelectionLength).requiresCount() : new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.condition == 'or') || (filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if ((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ? Object.keys(this.firstItem) : Object.keys(dataItem_1);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ? JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ? tempCount : this.totalItemCount;\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps] : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex == 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) || (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) || (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyCode != 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode == 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyCode != 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode == 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData && this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) : selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n };\n MultiSelect.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var element_1 = this.virtualSelectAll ? null : this.findListElement(this.list, 'li', 'data-value', currentValue);\n var val_1 = this.allowObjectBinding ? value : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n if (_this.enableVirtualization && isClearAll) {\n removeVal = [];\n }\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (this.enableVirtualization && isClearAll) {\n var childElements = this.chipCollectionWrapper.querySelectorAll('.e-chips');\n }\n else {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) && item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(this.getDataByValue(value), this.value)) || (!this.allowObjectBinding && this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization && !this.isSelectAllLoop) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var temp = void 0;\n var currentText = [];\n var value_1 = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value_1);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight;\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemsCount();\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] && _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight;\n if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n }\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering)) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.customFilterQuery = query;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if ((!(this.viewPortInfo.startIndex >= activeElement.index)) || (!(activeElement.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0 ? activeElement.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index_1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement) && !this.enableVirtualization) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (this.enableVirtualization) {\n listValue = this.findListElement((!isNullOrUndefined(this.list) ? this.list : this.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this.allowCustomValue && !this.enableVirtualization) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n if (this.enableVirtualization) {\n if (delim) {\n data = this.delimiterWrapper && this.delimiterWrapper.innerHTML == \"\" ? data : this.delimiterWrapper.innerHTML;\n }\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n hiddenElementContent = this.hiddenElement.innerHTML;\n if ((e && e.currentTarget && e.currentTarget.classList.contains('e-chips-close')) || (e && (e.key === 'Backspace'))) {\n var item = e.target.parentElement.getAttribute('data-value');\n if (e.key === 'Backspace') {\n var lastChild = this.hiddenElement.lastChild;\n if (lastChild) {\n this.hiddenElement.removeChild(lastChild);\n }\n }\n else {\n this.hiddenElement.childNodes.forEach(function (option) {\n if (option.value === item) {\n option.parentNode.removeChild(option);\n }\n });\n }\n hiddenElementContent = this.hiddenElement.innerHTML;\n }\n else {\n hiddenElementContent += \"<option selected value=\\\"\" + value + \"\\\">\" + index + \"</option>\";\n }\n break;\n }\n else {\n temp = this.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if (getValue((this.fields.value ? this.fields.value : 'value'), listItems[i]) === value) {\n text = getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) || (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) || ((this.enableVirtualization && value && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) || (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? <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 ? this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value) && (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):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-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-virtual-list)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.virtualSelectionAll = function (state, li, event) {\n var _this = this;\n var index = 0;\n var length = li.length;\n var count = this.maximumSelectionLength;\n if (state) {\n length = this.virtualSelectAllData && this.virtualSelectAllData.length != 0 ? this.virtualSelectAllData.length : length;\n this.listData = this.virtualSelectAllData;\n var ulElement = this.createListItems(this.virtualSelectAllData.slice(0, 30), this.fields);\n var firstItems = ulElement.querySelectorAll('li');\n var fragment_1 = document.createDocumentFragment();\n firstItems.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n li.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n var concatenatedNodeList = fragment_1.childNodes;\n if (this.virtualSelectAllData instanceof Array) {\n while (index < length && index <= 50 && index < count) {\n this.isSelectAllTarget = (length === index + 1);\n if (concatenatedNodeList[index]) {\n var value = this.allowObjectBinding ? this.getDataByValue(concatenatedNodeList[index].getAttribute('data-value')) : this.getFormattedValue(concatenatedNodeList[index].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n this.updateListSelection(concatenatedNodeList[index], event, length - index);\n }\n else {\n var value = getValue((this.fields.value) ? this.fields.value : '', this.virtualSelectAllData[index]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n if (this.value && value != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.dispatchSelect(value, event, null, false, length);\n }\n }\n index++;\n }\n if (length > 50) {\n setTimeout(function () {\n if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {\n _this.virtualSelectAllData.map(function (obj) {\n if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) && ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) || (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {\n _this.dispatchSelect(obj[_this.fields.value], event, null, false, length);\n }\n });\n }\n _this.updatedataValueItems(event);\n _this.isSelectAllLoop = false;\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {\n this.virtualSelectAllData.map(function (obj) {\n _this.virtualSelectAll = true;\n _this.removeValue(_this.value[index], event, _this.value.length - index);\n });\n }\n this.updatedataValueItems(event);\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n this.value = [];\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify(\"setCurrentViewDataAsync\", {\n component: this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if ((li && li.length) || (this.enableVirtualization && !state)) {\n var index_2 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n if (this.enableVirtualization) {\n this.virtualSelectAll = true;\n this.virtualSelectAllState = state;\n this.CurrentEvent = event;\n if (!this.virtualSelectAllData) {\n this.resetList(this.dataSource, this.fields, new Query());\n }\n if (this.virtualSelectAllData) {\n this.virtualSelectionAll(state, li, event);\n }\n }\n else {\n while (index_2 < length && index_2 <= 50 && index_2 < count_1) {\n this.isSelectAllTarget = (length === index_2 + 1);\n this.updateListSelection(li[index_2], event, length - index_2);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < length && index_2 < count_1) {\n _this.isSelectAllTarget = (length === index_2 + 1);\n _this.updateListSelection(li[index_2], event, length - index_2);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_2 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_2 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n if ((this.enableVirtualization && this.value && this.value.length > 0) || !this.enableVirtualization) {\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '<option selected value =\"' + value + '\">' + index + '</option>';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n if (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualSelectAllData)) {\n this.virtualSelectAll = false;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount != 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ? this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ? this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode == 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 && _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ? _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = 0;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n if (_this.remoteDataCount >= 0) {\n _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n }\n else {\n _this.resetList(_this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) && (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.updateInitialData();\n _this.checkAndResetCache();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 && _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' || _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify(\"setCurrentViewDataAsync\", {\n component: _this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null && _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n 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 (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = this.getItems();\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <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';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <select id=\"listbox\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n 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 this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index === 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 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 this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n var filterElem;\n var txtLength;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n if (scrollParent) {\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (args.items !== items) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value, index) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'role': 'textbox'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number);\n }\n var _loop_3 = function (i) {\n if (fListBox.ulElement.childNodes[i].classList.contains('e-disabled')) {\n flistboxarray = flistboxarray.filter(function (item) { return item !== i; });\n tempLiColl.push(fListBox.ulElement.childNodes[i]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n };\n for (var i = 0; i < fListBox.ulElement.childElementCount; i++) {\n _loop_3(i);\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < flistboxarray.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n }\n else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.liCollections);\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData.filter(function (data) { return (data !== undefined); });\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = tempData;\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && (!this.allowFiltering ||\n (this.allowFiltering && e.target !== this.filterInput))) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText, canFocus) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n if (canFocus === void 0) { canFocus = true; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '<option selected>' + this.value[i] + '</option>';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('None')\n ], ListBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement != this.inputElement && isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange == lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0) && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) || (this.liCollections && this.liCollections.length > 0))) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement && _this.inputElement.parentElement.parentElement &&\n _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {\n if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement(\"span\");\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === \"down\" || e.action === \"up\")) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix;\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() && this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', { detail: { click: true } });\n this.inputElement.dispatchEvent(event_1);\n }\n ;\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '<span contenteditable=\"true\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import * as index from './index';\nindex.DropDownList.Inject(index.VirtualScroll);\nindex.ComboBox.Inject(index.VirtualScroll);\nindex.AutoComplete.Inject(index.VirtualScroll);\nindex.MultiSelect.Inject(index.CheckBoxSelection, index.VirtualScroll);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryStringUpdated","currentValue","isVirtual","refresh","queryString","prevString","tempQueryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","listItems","strLength","length","item","i","matches","innerText","substr","push","indexUpdated","i_1","textContent","classList","contains","activeClass","Search","inputVal","searchType","dataSource","fields","type","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","text","checkField_1","fieldValue_1","split","filter","data","Array","prototype","slice","call","forEach","value","isHeader","toString","indexOf","getAttribute","replace","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","match","charCodeAt","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__assign","Object","assign","t","s","n","arguments","p","hasOwnProperty","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","verb","v","op","f","TypeError","_","y","ops","pop","trys","g","sent","throw","return","Symbol","iterator","VirtualScroll","parent","_this","sentinelInfo","up","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","down","popupContentElement","clientHeight","bottom","removeEventListener","addEventListener","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","getBoundingClientRect","EventHandler","popupScrollHandler","touchModule","Touch","scroll","bind","virtualScrollHandler","getModuleName","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","skip","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","newQuery","removeSkipAndTakeEvents","clone","tempCustomFilter","isCustomFilter","totalData","DataManager","json","totalItemCount","typedString","resetList","queries","event","fn","currentData","isResetListCalled","isListUpdated","viewPortInfo","mode","isArray","enableSelectionOrder","startIndex","updateVirtualReOrderList","itemCount","oldUlElement","list","removeChild","getForQuery","take","appendUncheckList","setCurrentView","reOrderList","skipvalue","totalItemsCount","alreadyAddedData","hideSelectedItem","getValue","allowCustomValue","virtualCustomData","splice","virtualCustomSelectData","concat","renderItems","updatevirtualizationList","getSkeletonCount","virtualTrackElement","getElementsByClassName","style","GetVirtualTrackHeight","skeletonCount","popupWrapper","virualElement","styles","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","isScrollChanged","currentFocuedListElement","currentSelectElem","getElementByValue","addListFocus","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","isRequesting","isOpenPopup","selectedValueInfo","Query","virtualScrollRefreshAsync","_a","isTyped","filterInput","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","customFilterQuery","isVirtualTrackHeight","preventSetCurrentData","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","virtualListCount","listElement","translateY","offsetHeight","transform","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","updateSelectionList","getItems","previousInfo","isscrollAction","infoType","offsets","previousEndIndex","vHeight","height","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","Math","round","floor","eIndex","ceil","idxAddedToExactTop","scrollPreStartIndex","delay","Browser","name","prevTop","debounced100","debounce","debounced50","target","scrollTop","left","scrollLeft","current","pstartIndex","scrollOffsetargs","debounceFunction","focusElement","activeElement","destroy","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","virtualList","DropDownBase","options","preventChange","isAngular","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","virtualSelectAll","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","ignoreAccent","checkValueCase","isTextByValue","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","ulElement","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","compile","templateName","noDataElement","isStringTemplate","nodeName","liElem","setAttribute","HTMLElement","Text","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","checkAndResetCache","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","getFilteringSkeletonCount","currentSkeletonCount","skeletonUpdated","abs","retainSkeleton","listContainerHeight","parseInt","actualCount","heightDimension","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","liElement","itemTemplate","skeleton","Skeleton","shape","width","cssClass","appendTo","firstChild","insertBefore","getTextByValue","properties","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","extend","htmlAttributes","option","getJSONfromOption","optionGroup","child","updateFields","iconCss","field","options_1","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","eventArgs","cancel","trigger","showSpinner","isWhereExist_1","emptyDataRequest","executeQuery","getQuery","isReOrder","queryElements","count","nos","condition","operator","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","notify","module","virtualSelectAllData","virtualSelectionAll","catch","onActionFailure","hideSpinner","virtualGroupDataSource","executeLocal","records","dataManager","localDataArgs","childElementCount","updateDataList","updatePopupState","state","updateRemoteData","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","isObjectInArray","objectToFind","array","some","keys","every","findListElement","findNode","attribute","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","setStyleAttribute","zIndex","postRender","focusItem","selectedItem","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","sortOrder","getSortedDataSource","groupDataSource","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","isDownkey","liHeight","getComputedStyle","getValidLi","getPropertyValue","topIndex","updateGroupHeader","returnExactCount","updateGroupFixedHeader","position","parentElement","offsetTop","isCheckBoxUpdate","virtualUlElement","updateListElements","createVirtualContent","incrementalLiCollections","incrementalUlElement","incrementalListData","templateID","itemcheck","renderContentTemplate","borderWidth","defaultView","isNaN","liWidth","offsetWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getIndexByValueFilter","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","oldProps","setUpdateInitial","updateData","j","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","wrapperElement","removeScrollEvent","addItem","itemIndex","newList","itemsCount","isListboxEmpty","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","validationAttribute","hidden","getDataByValue","_b","_c","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","isTouched","IsScrollerAtEnd","scrollHeight","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initialRemoteRender","isNotSearchList","isSelected","preventFocus","preventAutoFill","isValidKey","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","pageUp","pageDown","open","close","hide","space","requiredModules","modules","enableVirtualization","args","member","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","onChangeEvent","updateInitialData","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","readonly","defaultAttr","validateAttr","Input","setPlaceholder","dataBind","getAriaAttributes","aria-disabled","role","aria-expanded","aria-live","setEnabled","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","listItems_1","liItem","initValue","updateValues","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","window","windowResize","bindCommonEvent","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","closePopup","currentLi","setHover","hoveredItem","hasAttribute","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","spinnerElement","filterInputObj","createSpinner","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","value_2","selectedData","value_3","focusAtFirstElement","value_4","aria-activedescendant","findLi","steps","previousItem","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","getItem","where","Predicate","previousSelectedLI","aria-describedby","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","isCustomValue","datas","foundIndex","findIndex","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","firstItem","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","queryElements_1","queryElements_2","queryElements_3","requiresCount","start","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","focusIndexItem","setSearchBox","popupElement","createInput","filterBarPlaceholder","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","outerHeight","updateActionCompleteDataValues","tempItemCount","aria-hidden","aria-label","value_5","checkVal","x","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_6","actionCompleteDataUpdate","findEle","highlightedItem","refreshPopup","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","listitems","searchBoxHeight","maxHeight","offsetValue","getOffsetValue","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","popupWidth","outerWidth","collision","X","Y","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","getScrollableParent","scrollHandler","selectedElementID","enable","scrollBottom","aria-owns","aria-controls","inputParent","animModel","popup","animation","destroyPopup","show","Animation","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","isElementInViewport","elementRect","innerHeight","right","innerWidth","border","popupOffset","lastItem","listHeight","paddingBottom","isInitial","isInitialSelection","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","fixedHeader","dataSourceCount","preselectedIndex","updatedCssClassValues","class","setReadOnly","calculateWidth","getListHeight","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","value_7","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","blur","attrArray","clear","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","isCheckAllCalled","isFromFilterChange","keyEntity","isFirstRender","isInitialized","currentText","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","destroyPopupOnHide","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","clearTimeout","filterHandler","isChildObject","expandedNodes","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","remoteDataFilter","getTreeFields","nestedFilter","portals","filteredFields","map","remoteChildFilter","filteredChild","node","isChild","isChildFiltering","isMatchedNode","matchedChildren","filteredItems","matchedDataSource","nestedChildFilter","matchedData","parentId","parentValue","checkValue","tempChild","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","isClearButtonClick","showOverAllClear","isValue","chipWrapper","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","observedArgs","isValueChange","keyEventArgs","showSelectAll","clickHandler","focusedElement","resetValue","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","delimiterChar","getOverflowVal","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","textArr","join","chips","lastChild","updateRemainTemplate","updateDelimMode","getSelectedData","treeSettings","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","autoCheck","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","isCancelled","POPUP_CLASS","includes","reactCallBack","updatePopupHeight","oldFocussedNode","nodes","checkSelectAll","wrap","getHeight","inputWidth","ddElement","documentElement","isFilter","isFooter","isScroller","getTreeDataType","expandAll","restoreFilterSelection","elements","setEnableRTL","cloneChildField","hasChildren","expanded","imageUrl","selectable","tableName","tooltip","parentID","getTreeChildren","isChecked","childFields","getActualProperties","ds","len","updateTemplate","getEventArgs","nodeData","getNode","removeSelectedData","updateClearButton","nextSibling","chipClose","updateDropDownIconState","spinIcon","appendSpan","isValid","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","ddtValue","checkSelection","getNodeData","getChildNodeData","obj","newChildItems","getChildMapperFields","childNodeData","muteOnChange","textValue","hiddenInputValue","setChipValues","setTagValues","chip","data-value","chipContent","CHIP_CLOSE","removeChip","tempArr","templateComplier","setSelectAllWrapper","updateOverflowWrapper","clearCheckAll","selectAllItems","arr","updateTreeSettings","updateValue","updateCheckBoxState","checkBox","noRecord","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateText","updateModelMode","overFlow","ensureVisible","getData","ComboBox","preventBlur","targetFocus","inputValue","customValue","valueMuteChange","doesItemExist","currentValue_1","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","changeData","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","isHighlight","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","isSelectAllLoop","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","selectedListData","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","removeSelectedChip","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","predicate","or","and","adaptor","JsonAdaptor","proxy","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","remoteCustomValue","mainData","mainListCollection","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","virtualFilterQuery","isSkip","backCommand","dataChecks","customData","dataItem_1","random","emptyObject_1","JSON","parse","stringify","tempCount","isRemoteSelection","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","collection","previousFocusItem","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","arrowDown","arrowUp","onKeyDown","altKey","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","limit","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","updateCheck","isVirtualElement","elementIndex","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","hideElement","currentValue_2","targetEle_1","isSelectAllTarget","clearAllCallback","element2","addValue","updateWrapperText","textValues","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","multiCompiler","multiselectTemplate","encodeHtmlEntities","title","setClass","classes","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","onListMouseDown","textVal","delim","valueLength","hiddenElementContent","valueItem","listValue","isChipRemove","addValidInputClass","isInitialVirtualData","removeListSelection","isCustomData","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","visibleListElements","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","firstItems","fragment_1","createDocumentFragment","concatenatedNodeList","updatedataValueItems","updateHiddenElement","beforeSelectArgs","preventSelectEvent","index_2","count_1","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","checkvalue","typedValue","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","listItems_2","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","boundPreventListSelection","preventListSelection","stopPropagation","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isDataSourceUpdate","ListBox_1","originalElement","clonedElement","inputString","initLoad","isCustomFiltering","initialSelectedOptions","inputFormName","initWrapper","hiddenSelect","groupHdrs","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","dragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","jsonData","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","filterElem","txtLength","noRecElem","filterWireEvents","inputSearch","isRendered","initToolbarAndStyles","setCheckboxPosition","setFiltering","badge","getDragArgs","dragSelected","isIos","overflow","dragEventArgs","allowDragAll","scrollParent","boundRect","stopTimer","clientY","timer","setInterval","setScrollDown","scrollElem","scrollPixel","isScrollDown","clearInterval","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getArgs","sourceArgs","previousData","destArgs","dragArgs","source","previousIndex","currentIndex","sourceArgs1","destination","targetListObj","ul_1","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","idx","jsonIdx_1","sIdx_1","fLiColl_1","currIdx_1","ul_2","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","sortable","placeHolderElement","dragArgs1","liCollElem","destElem","elems","triggerBeforeItemRender","curData","enableItems","getSelectedItems","updateSelectedOptions","selElems","triggerChange","addItems","removeItems","removeItem","dupData","itemIdx","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","ulList","mainCount","ulEleCount","listindex","valueindex","form","keyDownHandler","focusOutHandler","wireToolbarEvent","formResetHandler","getToolElem","toolbarClickHandler","unwireEvents","clearFilterIconElem","selectHandler","liItems","autocorrect","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","min","prevSelIdx","max","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","toolbarAction","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","tempLiColl","flistboxarray","Number","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","canFocus","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","initRemoteRender","isListResetted","isCollided","lineBreak","isRTE","keyEventName","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isKeyAction","isUpDownKey","rangetextContent","isRteImage","range","getCurrentRange","startContainer","currentRange","getTextRange","lastWordRange","getLastLetter","lastTwoLetters","Regex","charRegex","isMatchedText","charAt","substring","lastIndexOf","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startOffset","startPos","words","popupEle_1","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","cssText","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","endOffset","collapse","getClientRects","rectTop","rectLeft","iframes","iframe","contentDocument","iframeRect","doc","windowLeft","pageXOffset","clientLeft","windowTop","pageYOffset","clientTop","Node","TEXT_NODE","span_1","textNodeWidth","fontSize","offsetLeft","isSelectCancel","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","textSuffix","endPos","mentionVal","commonAncestorContainer","deleteContents","frag","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","pointerType","event_1","CustomEvent","detail","click","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","index.DropDownList","Inject","index.VirtualScroll","index.ComboBox","index.AutoComplete","index.MultiSelect","index.CheckBoxSelection","index.ListBox"],"mappings":"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"}