@syncfusion/ej2-dropdowns 29.1.40 → 29.2.4-850322

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 (761) hide show
  1. package/{README.md → ReadMe.md} +217 -217
  2. package/dist/ej2-dropdowns.umd.min.js +1 -10
  3. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-dropdowns.es2015.js +299 -153
  5. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es5.js +467 -319
  7. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  8. package/license +2 -2
  9. package/package.json +81 -81
  10. package/src/auto-complete/auto-complete-model.d.ts +190 -190
  11. package/src/auto-complete/auto-complete.d.ts +13 -12
  12. package/src/auto-complete/auto-complete.js +30 -22
  13. package/src/combo-box/combo-box-model.d.ts +232 -240
  14. package/src/combo-box/combo-box.d.ts +26 -33
  15. package/src/combo-box/combo-box.js +29 -32
  16. package/src/common/virtual-scroll.js +54 -49
  17. package/src/drop-down-base/drop-down-base-model.d.ts +205 -205
  18. package/src/drop-down-base/drop-down-base.d.ts +20 -16
  19. package/src/drop-down-base/drop-down-base.js +74 -30
  20. package/src/drop-down-list/drop-down-list-model.d.ts +310 -303
  21. package/src/drop-down-list/drop-down-list.d.ts +12 -5
  22. package/src/drop-down-list/drop-down-list.js +75 -50
  23. package/src/drop-down-tree/drop-down-tree-model.d.ts +493 -493
  24. package/src/drop-down-tree/drop-down-tree.d.ts +2 -1
  25. package/src/drop-down-tree/drop-down-tree.js +30 -19
  26. package/src/list-box/list-box-model.d.ts +237 -237
  27. package/src/list-box/list-box.d.ts +2 -2
  28. package/src/list-box/list-box.js +19 -19
  29. package/src/mention/mention-model.d.ts +274 -267
  30. package/src/mention/mention.d.ts +9 -1
  31. package/src/mention/mention.js +49 -36
  32. package/src/multi-select/multi-select-model.d.ts +565 -558
  33. package/src/multi-select/multi-select.d.ts +11 -1
  34. package/src/multi-select/multi-select.js +109 -64
  35. package/styles/bds-lite.css +0 -3040
  36. package/styles/bds-lite.scss +0 -28
  37. package/styles/bds.css +0 -3890
  38. package/styles/bds.scss +0 -33
  39. package/styles/bootstrap-dark-lite.css +0 -2826
  40. package/styles/bootstrap-dark-lite.scss +0 -28
  41. package/styles/bootstrap-dark.css +0 -3520
  42. package/styles/bootstrap-dark.scss +0 -33
  43. package/styles/bootstrap-lite.css +0 -2822
  44. package/styles/bootstrap-lite.scss +0 -28
  45. package/styles/bootstrap.css +0 -3522
  46. package/styles/bootstrap.scss +0 -33
  47. package/styles/bootstrap4-lite.css +0 -2927
  48. package/styles/bootstrap4-lite.scss +0 -28
  49. package/styles/bootstrap4.css +0 -3796
  50. package/styles/bootstrap4.scss +0 -33
  51. package/styles/bootstrap5-dark-lite.css +0 -2906
  52. package/styles/bootstrap5-dark-lite.scss +0 -28
  53. package/styles/bootstrap5-dark.css +0 -3695
  54. package/styles/bootstrap5-dark.scss +0 -33
  55. package/styles/bootstrap5-lite.css +0 -2906
  56. package/styles/bootstrap5-lite.scss +0 -28
  57. package/styles/bootstrap5.3-lite.css +0 -2898
  58. package/styles/bootstrap5.3-lite.scss +0 -28
  59. package/styles/bootstrap5.3.css +0 -3644
  60. package/styles/bootstrap5.3.scss +0 -33
  61. package/styles/bootstrap5.css +0 -3695
  62. package/styles/bootstrap5.scss +0 -33
  63. package/styles/fabric-dark-lite.css +0 -2804
  64. package/styles/fabric-dark-lite.scss +0 -28
  65. package/styles/fabric-dark.css +0 -3500
  66. package/styles/fabric-dark.scss +0 -33
  67. package/styles/fabric-lite.css +0 -2800
  68. package/styles/fabric-lite.scss +0 -28
  69. package/styles/fabric.css +0 -3502
  70. package/styles/fabric.scss +0 -33
  71. package/styles/fluent-dark-lite.css +0 -2931
  72. package/styles/fluent-dark-lite.scss +0 -28
  73. package/styles/fluent-dark.css +0 -3730
  74. package/styles/fluent-dark.scss +0 -33
  75. package/styles/fluent-lite.css +0 -2931
  76. package/styles/fluent-lite.scss +0 -28
  77. package/styles/fluent.css +0 -3730
  78. package/styles/fluent.scss +0 -33
  79. package/styles/fluent2-lite.css +0 -3122
  80. package/styles/fluent2-lite.scss +0 -28
  81. package/styles/fluent2.css +0 -3915
  82. package/styles/fluent2.scss +0 -33
  83. package/styles/highcontrast-light-lite.css +0 -2903
  84. package/styles/highcontrast-light-lite.scss +0 -28
  85. package/styles/highcontrast-light.css +0 -3591
  86. package/styles/highcontrast-light.scss +0 -33
  87. package/styles/highcontrast-lite.css +0 -2949
  88. package/styles/highcontrast-lite.scss +0 -28
  89. package/styles/highcontrast.css +0 -3643
  90. package/styles/highcontrast.scss +0 -33
  91. package/styles/material-dark-lite.css +0 -3587
  92. package/styles/material-dark-lite.scss +0 -28
  93. package/styles/material-dark.css +0 -5060
  94. package/styles/material-dark.scss +0 -33
  95. package/styles/material-lite.css +0 -3618
  96. package/styles/material-lite.scss +0 -28
  97. package/styles/material.css +0 -5118
  98. package/styles/material.scss +0 -33
  99. package/styles/material3-dark-lite.css +0 -3521
  100. package/styles/material3-dark-lite.scss +0 -28
  101. package/styles/material3-dark.css +0 -5109
  102. package/styles/material3-dark.scss +0 -35
  103. package/styles/material3-lite.css +0 -3523
  104. package/styles/material3-lite.scss +0 -28
  105. package/styles/material3.css +0 -5111
  106. package/styles/material3.scss +0 -35
  107. package/styles/tailwind-dark-lite.css +0 -2877
  108. package/styles/tailwind-dark-lite.scss +0 -28
  109. package/styles/tailwind-dark.css +0 -3727
  110. package/styles/tailwind-dark.scss +0 -33
  111. package/styles/tailwind-lite.css +0 -2877
  112. package/styles/tailwind-lite.scss +0 -28
  113. package/styles/tailwind.css +0 -3727
  114. package/styles/tailwind.scss +0 -33
  115. package/styles/tailwind3-lite.css +0 -2920
  116. package/styles/tailwind3-lite.scss +0 -28
  117. package/styles/tailwind3.css +0 -3596
  118. package/styles/tailwind3.scss +0 -33
  119. package/.eslintrc.json +0 -261
  120. package/dist/ej2-dropdowns.min.js +0 -10
  121. package/dist/global/ej2-dropdowns.min.js +0 -11
  122. package/dist/global/ej2-dropdowns.min.js.map +0 -1
  123. package/dist/global/index.d.ts +0 -14
  124. package/helpers/e2e/autocomplete.d.ts +0 -16
  125. package/helpers/e2e/autocomplete.js +0 -60
  126. package/helpers/e2e/combobox.d.ts +0 -17
  127. package/helpers/e2e/combobox.js +0 -63
  128. package/helpers/e2e/dropdownlist.d.ts +0 -20
  129. package/helpers/e2e/dropdownlist.js +0 -72
  130. package/helpers/e2e/index.d.ts +0 -4
  131. package/helpers/e2e/index.js +0 -11
  132. package/helpers/e2e/listboxHelper.d.ts +0 -22
  133. package/helpers/e2e/listboxHelper.js +0 -56
  134. package/helpers/e2e/multiselect.d.ts +0 -31
  135. package/helpers/e2e/multiselect.js +0 -105
  136. package/styles/auto-complete/_all.scss +0 -1
  137. package/styles/auto-complete/_bds-definition.scss +0 -2
  138. package/styles/auto-complete/_bootstrap-dark-definition.scss +0 -3
  139. package/styles/auto-complete/_bootstrap-definition.scss +0 -2
  140. package/styles/auto-complete/_bootstrap4-definition.scss +0 -11
  141. package/styles/auto-complete/_bootstrap5-dark-definition.scss +0 -1
  142. package/styles/auto-complete/_bootstrap5-definition.scss +0 -2
  143. package/styles/auto-complete/_bootstrap5.3-definition.scss +0 -2
  144. package/styles/auto-complete/_fabric-dark-definition.scss +0 -2
  145. package/styles/auto-complete/_fabric-definition.scss +0 -2
  146. package/styles/auto-complete/_fluent-dark-definition.scss +0 -1
  147. package/styles/auto-complete/_fluent-definition.scss +0 -2
  148. package/styles/auto-complete/_fluent2-definition.scss +0 -2
  149. package/styles/auto-complete/_fusionnew-definition.scss +0 -2
  150. package/styles/auto-complete/_highcontrast-definition.scss +0 -2
  151. package/styles/auto-complete/_highcontrast-light-definition.scss +0 -2
  152. package/styles/auto-complete/_material-dark-definition.scss +0 -2
  153. package/styles/auto-complete/_material-definition.scss +0 -2
  154. package/styles/auto-complete/_material3-dark-definition.scss +0 -1
  155. package/styles/auto-complete/_material3-definition.scss +0 -2
  156. package/styles/auto-complete/_tailwind-dark-definition.scss +0 -1
  157. package/styles/auto-complete/_tailwind-definition.scss +0 -2
  158. package/styles/auto-complete/_tailwind3-definition.scss +0 -2
  159. package/styles/auto-complete/bds.css +0 -75
  160. package/styles/auto-complete/bds.scss +0 -4
  161. package/styles/auto-complete/bootstrap-dark.css +0 -59
  162. package/styles/auto-complete/bootstrap-dark.scss +0 -4
  163. package/styles/auto-complete/bootstrap.css +0 -59
  164. package/styles/auto-complete/bootstrap.scss +0 -4
  165. package/styles/auto-complete/bootstrap4.css +0 -95
  166. package/styles/auto-complete/bootstrap4.scss +0 -4
  167. package/styles/auto-complete/bootstrap5-dark.css +0 -97
  168. package/styles/auto-complete/bootstrap5-dark.scss +0 -4
  169. package/styles/auto-complete/bootstrap5.3.css +0 -101
  170. package/styles/auto-complete/bootstrap5.3.scss +0 -4
  171. package/styles/auto-complete/bootstrap5.css +0 -97
  172. package/styles/auto-complete/bootstrap5.scss +0 -4
  173. package/styles/auto-complete/fabric-dark.css +0 -35
  174. package/styles/auto-complete/fabric-dark.scss +0 -4
  175. package/styles/auto-complete/fabric.css +0 -35
  176. package/styles/auto-complete/fabric.scss +0 -4
  177. package/styles/auto-complete/fluent-dark.css +0 -90
  178. package/styles/auto-complete/fluent-dark.scss +0 -4
  179. package/styles/auto-complete/fluent.css +0 -90
  180. package/styles/auto-complete/fluent.scss +0 -4
  181. package/styles/auto-complete/fluent2.css +0 -77
  182. package/styles/auto-complete/fluent2.scss +0 -4
  183. package/styles/auto-complete/highcontrast-light.css +0 -44
  184. package/styles/auto-complete/highcontrast-light.scss +0 -4
  185. package/styles/auto-complete/highcontrast.css +0 -44
  186. package/styles/auto-complete/highcontrast.scss +0 -4
  187. package/styles/auto-complete/material-dark.css +0 -84
  188. package/styles/auto-complete/material-dark.scss +0 -4
  189. package/styles/auto-complete/material.css +0 -88
  190. package/styles/auto-complete/material.scss +0 -4
  191. package/styles/auto-complete/material3-dark.css +0 -96
  192. package/styles/auto-complete/material3-dark.scss +0 -5
  193. package/styles/auto-complete/material3.css +0 -98
  194. package/styles/auto-complete/material3.scss +0 -5
  195. package/styles/auto-complete/tailwind-dark.css +0 -71
  196. package/styles/auto-complete/tailwind-dark.scss +0 -4
  197. package/styles/auto-complete/tailwind.css +0 -71
  198. package/styles/auto-complete/tailwind.scss +0 -4
  199. package/styles/auto-complete/tailwind3.css +0 -101
  200. package/styles/auto-complete/tailwind3.scss +0 -4
  201. package/styles/combo-box/_all.scss +0 -1
  202. package/styles/combo-box/_bds-definition.scss +0 -2
  203. package/styles/combo-box/_bootstrap-dark-definition.scss +0 -2
  204. package/styles/combo-box/_bootstrap-definition.scss +0 -2
  205. package/styles/combo-box/_bootstrap4-definition.scss +0 -11
  206. package/styles/combo-box/_bootstrap5-dark-definition.scss +0 -1
  207. package/styles/combo-box/_bootstrap5-definition.scss +0 -2
  208. package/styles/combo-box/_bootstrap5.3-definition.scss +0 -2
  209. package/styles/combo-box/_fabric-dark-definition.scss +0 -2
  210. package/styles/combo-box/_fabric-definition.scss +0 -2
  211. package/styles/combo-box/_fluent-dark-definition.scss +0 -1
  212. package/styles/combo-box/_fluent-definition.scss +0 -2
  213. package/styles/combo-box/_fluent2-definition.scss +0 -2
  214. package/styles/combo-box/_fusionnew-definition.scss +0 -2
  215. package/styles/combo-box/_highcontrast-definition.scss +0 -2
  216. package/styles/combo-box/_highcontrast-light-definition.scss +0 -3
  217. package/styles/combo-box/_material-dark-definition.scss +0 -2
  218. package/styles/combo-box/_material-definition.scss +0 -2
  219. package/styles/combo-box/_material3-dark-definition.scss +0 -1
  220. package/styles/combo-box/_material3-definition.scss +0 -2
  221. package/styles/combo-box/_tailwind-dark-definition.scss +0 -1
  222. package/styles/combo-box/_tailwind-definition.scss +0 -2
  223. package/styles/combo-box/_tailwind3-definition.scss +0 -2
  224. package/styles/combo-box/bds.css +0 -75
  225. package/styles/combo-box/bds.scss +0 -4
  226. package/styles/combo-box/bootstrap-dark.css +0 -59
  227. package/styles/combo-box/bootstrap-dark.scss +0 -4
  228. package/styles/combo-box/bootstrap.css +0 -59
  229. package/styles/combo-box/bootstrap.scss +0 -4
  230. package/styles/combo-box/bootstrap4.css +0 -95
  231. package/styles/combo-box/bootstrap4.scss +0 -4
  232. package/styles/combo-box/bootstrap5-dark.css +0 -97
  233. package/styles/combo-box/bootstrap5-dark.scss +0 -4
  234. package/styles/combo-box/bootstrap5.3.css +0 -101
  235. package/styles/combo-box/bootstrap5.3.scss +0 -4
  236. package/styles/combo-box/bootstrap5.css +0 -97
  237. package/styles/combo-box/bootstrap5.scss +0 -4
  238. package/styles/combo-box/fabric-dark.css +0 -35
  239. package/styles/combo-box/fabric-dark.scss +0 -4
  240. package/styles/combo-box/fabric.css +0 -35
  241. package/styles/combo-box/fabric.scss +0 -4
  242. package/styles/combo-box/fluent-dark.css +0 -90
  243. package/styles/combo-box/fluent-dark.scss +0 -4
  244. package/styles/combo-box/fluent.css +0 -90
  245. package/styles/combo-box/fluent.scss +0 -4
  246. package/styles/combo-box/fluent2.css +0 -77
  247. package/styles/combo-box/fluent2.scss +0 -4
  248. package/styles/combo-box/highcontrast-light.css +0 -44
  249. package/styles/combo-box/highcontrast-light.scss +0 -4
  250. package/styles/combo-box/highcontrast.css +0 -44
  251. package/styles/combo-box/highcontrast.scss +0 -4
  252. package/styles/combo-box/material-dark.css +0 -84
  253. package/styles/combo-box/material-dark.scss +0 -4
  254. package/styles/combo-box/material.css +0 -88
  255. package/styles/combo-box/material.scss +0 -4
  256. package/styles/combo-box/material3-dark.css +0 -96
  257. package/styles/combo-box/material3-dark.scss +0 -5
  258. package/styles/combo-box/material3.css +0 -98
  259. package/styles/combo-box/material3.scss +0 -5
  260. package/styles/combo-box/tailwind-dark.css +0 -71
  261. package/styles/combo-box/tailwind-dark.scss +0 -4
  262. package/styles/combo-box/tailwind.css +0 -71
  263. package/styles/combo-box/tailwind.scss +0 -4
  264. package/styles/combo-box/tailwind3.css +0 -101
  265. package/styles/combo-box/tailwind3.scss +0 -4
  266. package/styles/drop-down-base/_all.scss +0 -2
  267. package/styles/drop-down-base/_bds-definition.scss +0 -112
  268. package/styles/drop-down-base/_bigger.scss +0 -198
  269. package/styles/drop-down-base/_bootstrap-dark-definition.scss +0 -80
  270. package/styles/drop-down-base/_bootstrap-definition.scss +0 -78
  271. package/styles/drop-down-base/_bootstrap4-definition.scss +0 -83
  272. package/styles/drop-down-base/_bootstrap5-dark-definition.scss +0 -1
  273. package/styles/drop-down-base/_bootstrap5-definition.scss +0 -98
  274. package/styles/drop-down-base/_bootstrap5.3-definition.scss +0 -98
  275. package/styles/drop-down-base/_definition.scss +0 -23
  276. package/styles/drop-down-base/_fabric-dark-definition.scss +0 -81
  277. package/styles/drop-down-base/_fabric-definition.scss +0 -79
  278. package/styles/drop-down-base/_fluent-dark-definition.scss +0 -1
  279. package/styles/drop-down-base/_fluent-definition.scss +0 -102
  280. package/styles/drop-down-base/_fluent2-definition.scss +0 -113
  281. package/styles/drop-down-base/_fusionnew-definition.scss +0 -98
  282. package/styles/drop-down-base/_highcontrast-definition.scss +0 -96
  283. package/styles/drop-down-base/_highcontrast-light-definition.scss +0 -96
  284. package/styles/drop-down-base/_layout.scss +0 -148
  285. package/styles/drop-down-base/_material-dark-definition.scss +0 -82
  286. package/styles/drop-down-base/_material-definition.scss +0 -81
  287. package/styles/drop-down-base/_material3-dark-definition.scss +0 -1
  288. package/styles/drop-down-base/_material3-definition.scss +0 -73
  289. package/styles/drop-down-base/_tailwind-dark-definition.scss +0 -1
  290. package/styles/drop-down-base/_tailwind-definition.scss +0 -107
  291. package/styles/drop-down-base/_tailwind3-definition.scss +0 -98
  292. package/styles/drop-down-base/_theme.scss +0 -303
  293. package/styles/drop-down-base/bds.css +0 -496
  294. package/styles/drop-down-base/bds.scss +0 -4
  295. package/styles/drop-down-base/bootstrap-dark.css +0 -379
  296. package/styles/drop-down-base/bootstrap-dark.scss +0 -4
  297. package/styles/drop-down-base/bootstrap.css +0 -379
  298. package/styles/drop-down-base/bootstrap.scss +0 -4
  299. package/styles/drop-down-base/bootstrap4.css +0 -389
  300. package/styles/drop-down-base/bootstrap4.scss +0 -4
  301. package/styles/drop-down-base/bootstrap5-dark.css +0 -411
  302. package/styles/drop-down-base/bootstrap5-dark.scss +0 -4
  303. package/styles/drop-down-base/bootstrap5.3.css +0 -415
  304. package/styles/drop-down-base/bootstrap5.3.scss +0 -4
  305. package/styles/drop-down-base/bootstrap5.css +0 -411
  306. package/styles/drop-down-base/bootstrap5.scss +0 -4
  307. package/styles/drop-down-base/fabric-dark.css +0 -379
  308. package/styles/drop-down-base/fabric-dark.scss +0 -4
  309. package/styles/drop-down-base/fabric.css +0 -379
  310. package/styles/drop-down-base/fabric.scss +0 -4
  311. package/styles/drop-down-base/fluent-dark.css +0 -427
  312. package/styles/drop-down-base/fluent-dark.scss +0 -4
  313. package/styles/drop-down-base/fluent.css +0 -427
  314. package/styles/drop-down-base/fluent.scss +0 -4
  315. package/styles/drop-down-base/fluent2.css +0 -427
  316. package/styles/drop-down-base/fluent2.scss +0 -4
  317. package/styles/drop-down-base/highcontrast-light.css +0 -391
  318. package/styles/drop-down-base/highcontrast-light.scss +0 -4
  319. package/styles/drop-down-base/highcontrast.css +0 -391
  320. package/styles/drop-down-base/highcontrast.scss +0 -4
  321. package/styles/drop-down-base/material-dark.css +0 -378
  322. package/styles/drop-down-base/material-dark.scss +0 -4
  323. package/styles/drop-down-base/material.css +0 -378
  324. package/styles/drop-down-base/material.scss +0 -4
  325. package/styles/drop-down-base/material3-dark.css +0 -390
  326. package/styles/drop-down-base/material3-dark.scss +0 -5
  327. package/styles/drop-down-base/material3.css +0 -392
  328. package/styles/drop-down-base/material3.scss +0 -5
  329. package/styles/drop-down-base/tailwind-dark.css +0 -487
  330. package/styles/drop-down-base/tailwind-dark.scss +0 -4
  331. package/styles/drop-down-base/tailwind.css +0 -487
  332. package/styles/drop-down-base/tailwind.scss +0 -4
  333. package/styles/drop-down-base/tailwind3.css +0 -392
  334. package/styles/drop-down-base/tailwind3.scss +0 -4
  335. package/styles/drop-down-list/_all.scss +0 -3
  336. package/styles/drop-down-list/_bds-definition.scss +0 -100
  337. package/styles/drop-down-list/_bigger.scss +0 -713
  338. package/styles/drop-down-list/_bootstrap-dark-definition.scss +0 -94
  339. package/styles/drop-down-list/_bootstrap-definition.scss +0 -93
  340. package/styles/drop-down-list/_bootstrap4-definition.scss +0 -122
  341. package/styles/drop-down-list/_bootstrap5-dark-definition.scss +0 -1
  342. package/styles/drop-down-list/_bootstrap5-definition.scss +0 -135
  343. package/styles/drop-down-list/_bootstrap5.3-definition.scss +0 -136
  344. package/styles/drop-down-list/_fabric-dark-definition.scss +0 -72
  345. package/styles/drop-down-list/_fabric-definition.scss +0 -69
  346. package/styles/drop-down-list/_fluent-dark-definition.scss +0 -1
  347. package/styles/drop-down-list/_fluent-definition.scss +0 -128
  348. package/styles/drop-down-list/_fluent2-definition.scss +0 -101
  349. package/styles/drop-down-list/_fusionnew-definition.scss +0 -134
  350. package/styles/drop-down-list/_highcontrast-definition.scss +0 -83
  351. package/styles/drop-down-list/_highcontrast-light-definition.scss +0 -85
  352. package/styles/drop-down-list/_layout.scss +0 -284
  353. package/styles/drop-down-list/_material-dark-definition.scss +0 -110
  354. package/styles/drop-down-list/_material-definition.scss +0 -112
  355. package/styles/drop-down-list/_material3-dark-definition.scss +0 -1
  356. package/styles/drop-down-list/_material3-definition.scss +0 -114
  357. package/styles/drop-down-list/_tailwind-dark-definition.scss +0 -1
  358. package/styles/drop-down-list/_tailwind-definition.scss +0 -100
  359. package/styles/drop-down-list/_tailwind3-definition.scss +0 -135
  360. package/styles/drop-down-list/_theme.scss +0 -17
  361. package/styles/drop-down-list/bds.css +0 -622
  362. package/styles/drop-down-list/bds.scss +0 -10
  363. package/styles/drop-down-list/bootstrap-dark.css +0 -464
  364. package/styles/drop-down-list/bootstrap-dark.scss +0 -10
  365. package/styles/drop-down-list/bootstrap.css +0 -466
  366. package/styles/drop-down-list/bootstrap.scss +0 -10
  367. package/styles/drop-down-list/bootstrap4.css +0 -511
  368. package/styles/drop-down-list/bootstrap4.scss +0 -10
  369. package/styles/drop-down-list/bootstrap5-dark.css +0 -510
  370. package/styles/drop-down-list/bootstrap5-dark.scss +0 -10
  371. package/styles/drop-down-list/bootstrap5.3.css +0 -515
  372. package/styles/drop-down-list/bootstrap5.3.scss +0 -10
  373. package/styles/drop-down-list/bootstrap5.css +0 -510
  374. package/styles/drop-down-list/bootstrap5.scss +0 -10
  375. package/styles/drop-down-list/fabric-dark.css +0 -439
  376. package/styles/drop-down-list/fabric-dark.scss +0 -10
  377. package/styles/drop-down-list/fabric.css +0 -439
  378. package/styles/drop-down-list/fabric.scss +0 -10
  379. package/styles/drop-down-list/fluent-dark.css +0 -483
  380. package/styles/drop-down-list/fluent-dark.scss +0 -10
  381. package/styles/drop-down-list/fluent.css +0 -483
  382. package/styles/drop-down-list/fluent.scss +0 -10
  383. package/styles/drop-down-list/fluent2.css +0 -666
  384. package/styles/drop-down-list/fluent2.scss +0 -10
  385. package/styles/drop-down-list/highcontrast-light.css +0 -440
  386. package/styles/drop-down-list/highcontrast-light.scss +0 -10
  387. package/styles/drop-down-list/highcontrast.css +0 -455
  388. package/styles/drop-down-list/highcontrast.scss +0 -10
  389. package/styles/drop-down-list/icons/_bds.scss +0 -14
  390. package/styles/drop-down-list/icons/_bootstrap-dark.scss +0 -18
  391. package/styles/drop-down-list/icons/_bootstrap.scss +0 -18
  392. package/styles/drop-down-list/icons/_bootstrap4.scss +0 -18
  393. package/styles/drop-down-list/icons/_bootstrap5-dark.scss +0 -1
  394. package/styles/drop-down-list/icons/_bootstrap5.3.scss +0 -18
  395. package/styles/drop-down-list/icons/_bootstrap5.scss +0 -18
  396. package/styles/drop-down-list/icons/_fabric-dark.scss +0 -18
  397. package/styles/drop-down-list/icons/_fabric.scss +0 -18
  398. package/styles/drop-down-list/icons/_fluent-dark.scss +0 -1
  399. package/styles/drop-down-list/icons/_fluent.scss +0 -18
  400. package/styles/drop-down-list/icons/_fluent2.scss +0 -18
  401. package/styles/drop-down-list/icons/_fusionnew.scss +0 -14
  402. package/styles/drop-down-list/icons/_highcontrast-light.scss +0 -14
  403. package/styles/drop-down-list/icons/_highcontrast.scss +0 -18
  404. package/styles/drop-down-list/icons/_material-dark.scss +0 -18
  405. package/styles/drop-down-list/icons/_material.scss +0 -18
  406. package/styles/drop-down-list/icons/_material3-dark.scss +0 -1
  407. package/styles/drop-down-list/icons/_material3.scss +0 -18
  408. package/styles/drop-down-list/icons/_tailwind-dark.scss +0 -1
  409. package/styles/drop-down-list/icons/_tailwind.scss +0 -18
  410. package/styles/drop-down-list/icons/_tailwind3.scss +0 -14
  411. package/styles/drop-down-list/material-dark.css +0 -487
  412. package/styles/drop-down-list/material-dark.scss +0 -10
  413. package/styles/drop-down-list/material.css +0 -526
  414. package/styles/drop-down-list/material.scss +0 -10
  415. package/styles/drop-down-list/material3-dark.css +0 -545
  416. package/styles/drop-down-list/material3-dark.scss +0 -11
  417. package/styles/drop-down-list/material3.css +0 -547
  418. package/styles/drop-down-list/material3.scss +0 -11
  419. package/styles/drop-down-list/tailwind-dark.css +0 -472
  420. package/styles/drop-down-list/tailwind-dark.scss +0 -10
  421. package/styles/drop-down-list/tailwind.css +0 -472
  422. package/styles/drop-down-list/tailwind.scss +0 -10
  423. package/styles/drop-down-list/tailwind3.css +0 -469
  424. package/styles/drop-down-list/tailwind3.scss +0 -10
  425. package/styles/drop-down-tree/_all.scss +0 -2
  426. package/styles/drop-down-tree/_bds-definition.scss +0 -75
  427. package/styles/drop-down-tree/_bigger.scss +0 -561
  428. package/styles/drop-down-tree/_bootstrap-dark-definition.scss +0 -82
  429. package/styles/drop-down-tree/_bootstrap-definition.scss +0 -81
  430. package/styles/drop-down-tree/_bootstrap4-definition.scss +0 -85
  431. package/styles/drop-down-tree/_bootstrap5-dark-definition.scss +0 -1
  432. package/styles/drop-down-tree/_bootstrap5-definition.scss +0 -74
  433. package/styles/drop-down-tree/_bootstrap5.3-definition.scss +0 -74
  434. package/styles/drop-down-tree/_fabric-dark-definition.scss +0 -82
  435. package/styles/drop-down-tree/_fabric-definition.scss +0 -82
  436. package/styles/drop-down-tree/_fluent-dark-definition.scss +0 -1
  437. package/styles/drop-down-tree/_fluent-definition.scss +0 -79
  438. package/styles/drop-down-tree/_fluent2-definition.scss +0 -86
  439. package/styles/drop-down-tree/_fusionnew-definition.scss +0 -70
  440. package/styles/drop-down-tree/_highcontrast-definition.scss +0 -82
  441. package/styles/drop-down-tree/_highcontrast-light-definition.scss +0 -82
  442. package/styles/drop-down-tree/_layout.scss +0 -942
  443. package/styles/drop-down-tree/_material-dark-definition.scss +0 -83
  444. package/styles/drop-down-tree/_material-definition.scss +0 -85
  445. package/styles/drop-down-tree/_material3-dark-definition.scss +0 -1
  446. package/styles/drop-down-tree/_material3-definition.scss +0 -84
  447. package/styles/drop-down-tree/_tailwind-dark-definition.scss +0 -1
  448. package/styles/drop-down-tree/_tailwind-definition.scss +0 -75
  449. package/styles/drop-down-tree/_tailwind3-definition.scss +0 -75
  450. package/styles/drop-down-tree/_theme.scss +0 -135
  451. package/styles/drop-down-tree/bds.css +0 -730
  452. package/styles/drop-down-tree/bds.scss +0 -10
  453. package/styles/drop-down-tree/bootstrap-dark.css +0 -485
  454. package/styles/drop-down-tree/bootstrap-dark.scss +0 -10
  455. package/styles/drop-down-tree/bootstrap.css +0 -486
  456. package/styles/drop-down-tree/bootstrap.scss +0 -10
  457. package/styles/drop-down-tree/bootstrap4.css +0 -515
  458. package/styles/drop-down-tree/bootstrap4.scss +0 -10
  459. package/styles/drop-down-tree/bootstrap5-dark.css +0 -547
  460. package/styles/drop-down-tree/bootstrap5-dark.scss +0 -10
  461. package/styles/drop-down-tree/bootstrap5.3.css +0 -482
  462. package/styles/drop-down-tree/bootstrap5.3.scss +0 -10
  463. package/styles/drop-down-tree/bootstrap5.css +0 -547
  464. package/styles/drop-down-tree/bootstrap5.scss +0 -10
  465. package/styles/drop-down-tree/fabric-dark.css +0 -487
  466. package/styles/drop-down-tree/fabric-dark.scss +0 -10
  467. package/styles/drop-down-tree/fabric.css +0 -488
  468. package/styles/drop-down-tree/fabric.scss +0 -10
  469. package/styles/drop-down-tree/fluent-dark.css +0 -549
  470. package/styles/drop-down-tree/fluent-dark.scss +0 -10
  471. package/styles/drop-down-tree/fluent.css +0 -549
  472. package/styles/drop-down-tree/fluent.scss +0 -10
  473. package/styles/drop-down-tree/fluent2.css +0 -721
  474. package/styles/drop-down-tree/fluent2.scss +0 -10
  475. package/styles/drop-down-tree/highcontrast-light.css +0 -500
  476. package/styles/drop-down-tree/highcontrast-light.scss +0 -10
  477. package/styles/drop-down-tree/highcontrast.css +0 -510
  478. package/styles/drop-down-tree/highcontrast.scss +0 -10
  479. package/styles/drop-down-tree/icons/_bds.scss +0 -11
  480. package/styles/drop-down-tree/icons/_bootstrap-dark.scss +0 -11
  481. package/styles/drop-down-tree/icons/_bootstrap.scss +0 -11
  482. package/styles/drop-down-tree/icons/_bootstrap4.scss +0 -11
  483. package/styles/drop-down-tree/icons/_bootstrap5-dark.scss +0 -1
  484. package/styles/drop-down-tree/icons/_bootstrap5.3.scss +0 -11
  485. package/styles/drop-down-tree/icons/_bootstrap5.scss +0 -11
  486. package/styles/drop-down-tree/icons/_fabric-dark.scss +0 -11
  487. package/styles/drop-down-tree/icons/_fabric.scss +0 -11
  488. package/styles/drop-down-tree/icons/_fluent-dark.scss +0 -1
  489. package/styles/drop-down-tree/icons/_fluent.scss +0 -11
  490. package/styles/drop-down-tree/icons/_fluent2.scss +0 -14
  491. package/styles/drop-down-tree/icons/_fusionnew.scss +0 -11
  492. package/styles/drop-down-tree/icons/_highcontrast-light.scss +0 -11
  493. package/styles/drop-down-tree/icons/_highcontrast.scss +0 -11
  494. package/styles/drop-down-tree/icons/_material-dark.scss +0 -11
  495. package/styles/drop-down-tree/icons/_material.scss +0 -11
  496. package/styles/drop-down-tree/icons/_material3-dark.scss +0 -1
  497. package/styles/drop-down-tree/icons/_material3.scss +0 -11
  498. package/styles/drop-down-tree/icons/_tailwind-dark.scss +0 -11
  499. package/styles/drop-down-tree/icons/_tailwind.scss +0 -11
  500. package/styles/drop-down-tree/icons/_tailwind3.scss +0 -11
  501. package/styles/drop-down-tree/material-dark.css +0 -812
  502. package/styles/drop-down-tree/material-dark.scss +0 -10
  503. package/styles/drop-down-tree/material.css +0 -836
  504. package/styles/drop-down-tree/material.scss +0 -10
  505. package/styles/drop-down-tree/material3-dark.css +0 -494
  506. package/styles/drop-down-tree/material3-dark.scss +0 -11
  507. package/styles/drop-down-tree/material3.css +0 -496
  508. package/styles/drop-down-tree/material3.scss +0 -11
  509. package/styles/drop-down-tree/tailwind-dark.css +0 -576
  510. package/styles/drop-down-tree/tailwind-dark.scss +0 -10
  511. package/styles/drop-down-tree/tailwind.css +0 -576
  512. package/styles/drop-down-tree/tailwind.scss +0 -10
  513. package/styles/drop-down-tree/tailwind3.css +0 -536
  514. package/styles/drop-down-tree/tailwind3.scss +0 -10
  515. package/styles/list-box/_all.scss +0 -2
  516. package/styles/list-box/_bds-definition.scss +0 -136
  517. package/styles/list-box/_bigger.scss +0 -190
  518. package/styles/list-box/_bootstrap-dark-definition.scss +0 -126
  519. package/styles/list-box/_bootstrap-definition.scss +0 -119
  520. package/styles/list-box/_bootstrap4-definition.scss +0 -126
  521. package/styles/list-box/_bootstrap5-dark-definition.scss +0 -1
  522. package/styles/list-box/_bootstrap5-definition.scss +0 -121
  523. package/styles/list-box/_bootstrap5.3-definition.scss +0 -123
  524. package/styles/list-box/_fabric-dark-definition.scss +0 -124
  525. package/styles/list-box/_fabric-definition.scss +0 -119
  526. package/styles/list-box/_fluent-dark-definition.scss +0 -1
  527. package/styles/list-box/_fluent-definition.scss +0 -120
  528. package/styles/list-box/_fluent2-definition.scss +0 -121
  529. package/styles/list-box/_fusionnew-definition.scss +0 -111
  530. package/styles/list-box/_highcontrast-definition.scss +0 -119
  531. package/styles/list-box/_highcontrast-light-definition.scss +0 -124
  532. package/styles/list-box/_layout.scss +0 -496
  533. package/styles/list-box/_material-dark-definition.scss +0 -124
  534. package/styles/list-box/_material-definition.scss +0 -119
  535. package/styles/list-box/_material3-dark-definition.scss +0 -1
  536. package/styles/list-box/_material3-definition.scss +0 -119
  537. package/styles/list-box/_tailwind-dark-definition.scss +0 -1
  538. package/styles/list-box/_tailwind-definition.scss +0 -119
  539. package/styles/list-box/_tailwind3-definition.scss +0 -123
  540. package/styles/list-box/_theme.scss +0 -327
  541. package/styles/list-box/bds.css +0 -971
  542. package/styles/list-box/bds.scss +0 -6
  543. package/styles/list-box/bootstrap-dark.css +0 -916
  544. package/styles/list-box/bootstrap-dark.scss +0 -6
  545. package/styles/list-box/bootstrap.css +0 -927
  546. package/styles/list-box/bootstrap.scss +0 -6
  547. package/styles/list-box/bootstrap4.css +0 -977
  548. package/styles/list-box/bootstrap4.scss +0 -6
  549. package/styles/list-box/bootstrap5-dark.css +0 -939
  550. package/styles/list-box/bootstrap5-dark.scss +0 -6
  551. package/styles/list-box/bootstrap5.3.css +0 -956
  552. package/styles/list-box/bootstrap5.3.scss +0 -6
  553. package/styles/list-box/bootstrap5.css +0 -939
  554. package/styles/list-box/bootstrap5.scss +0 -6
  555. package/styles/list-box/fabric-dark.css +0 -916
  556. package/styles/list-box/fabric-dark.scss +0 -6
  557. package/styles/list-box/fabric.css +0 -927
  558. package/styles/list-box/fabric.scss +0 -6
  559. package/styles/list-box/fluent-dark.css +0 -939
  560. package/styles/list-box/fluent-dark.scss +0 -6
  561. package/styles/list-box/fluent.css +0 -939
  562. package/styles/list-box/fluent.scss +0 -6
  563. package/styles/list-box/fluent2.css +0 -979
  564. package/styles/list-box/fluent2.scss +0 -6
  565. package/styles/list-box/highcontrast-light.css +0 -928
  566. package/styles/list-box/highcontrast-light.scss +0 -6
  567. package/styles/list-box/highcontrast.css +0 -939
  568. package/styles/list-box/highcontrast.scss +0 -6
  569. package/styles/list-box/icons/_bds.scss +0 -25
  570. package/styles/list-box/icons/_bootstrap-dark.scss +0 -25
  571. package/styles/list-box/icons/_bootstrap.scss +0 -25
  572. package/styles/list-box/icons/_bootstrap4.scss +0 -25
  573. package/styles/list-box/icons/_bootstrap5-dark.scss +0 -1
  574. package/styles/list-box/icons/_bootstrap5.3.scss +0 -25
  575. package/styles/list-box/icons/_bootstrap5.scss +0 -25
  576. package/styles/list-box/icons/_fabric-dark.scss +0 -25
  577. package/styles/list-box/icons/_fabric.scss +0 -25
  578. package/styles/list-box/icons/_fluent-dark.scss +0 -1
  579. package/styles/list-box/icons/_fluent.scss +0 -25
  580. package/styles/list-box/icons/_fluent2.scss +0 -25
  581. package/styles/list-box/icons/_fusionnew.scss +0 -25
  582. package/styles/list-box/icons/_highcontrast-light.scss +0 -25
  583. package/styles/list-box/icons/_highcontrast.scss +0 -25
  584. package/styles/list-box/icons/_material-dark.scss +0 -25
  585. package/styles/list-box/icons/_material.scss +0 -25
  586. package/styles/list-box/icons/_material3-dark.scss +0 -1
  587. package/styles/list-box/icons/_material3.scss +0 -25
  588. package/styles/list-box/icons/_tailwind-dark.scss +0 -25
  589. package/styles/list-box/icons/_tailwind.scss +0 -25
  590. package/styles/list-box/icons/_tailwind3.scss +0 -25
  591. package/styles/list-box/material-dark.css +0 -916
  592. package/styles/list-box/material-dark.scss +0 -6
  593. package/styles/list-box/material.css +0 -927
  594. package/styles/list-box/material.scss +0 -6
  595. package/styles/list-box/material3-dark.css +0 -919
  596. package/styles/list-box/material3-dark.scss +0 -7
  597. package/styles/list-box/material3.css +0 -921
  598. package/styles/list-box/material3.scss +0 -7
  599. package/styles/list-box/tailwind-dark.css +0 -945
  600. package/styles/list-box/tailwind-dark.scss +0 -6
  601. package/styles/list-box/tailwind.css +0 -945
  602. package/styles/list-box/tailwind.scss +0 -6
  603. package/styles/list-box/tailwind3.css +0 -995
  604. package/styles/list-box/tailwind3.scss +0 -6
  605. package/styles/mention/_all.scss +0 -1
  606. package/styles/mention/_bds-definition.scss +0 -1
  607. package/styles/mention/_bootstrap-dark-definition.scss +0 -3
  608. package/styles/mention/_bootstrap-definition.scss +0 -3
  609. package/styles/mention/_bootstrap4-definition.scss +0 -3
  610. package/styles/mention/_bootstrap5-dark-definition.scss +0 -1
  611. package/styles/mention/_bootstrap5-definition.scss +0 -1
  612. package/styles/mention/_bootstrap5.3-definition.scss +0 -1
  613. package/styles/mention/_fabric-dark-definition.scss +0 -2
  614. package/styles/mention/_fabric-definition.scss +0 -3
  615. package/styles/mention/_fluent-dark-definition.scss +0 -1
  616. package/styles/mention/_fluent-definition.scss +0 -1
  617. package/styles/mention/_fluent2-definition.scss +0 -1
  618. package/styles/mention/_fusionnew-definition.scss +0 -1
  619. package/styles/mention/_highcontrast-definition.scss +0 -3
  620. package/styles/mention/_highcontrast-light-definition.scss +0 -3
  621. package/styles/mention/_layout.scss +0 -6
  622. package/styles/mention/_material-dark-definition.scss +0 -3
  623. package/styles/mention/_material-definition.scss +0 -3
  624. package/styles/mention/_material3-dark-definition.scss +0 -1
  625. package/styles/mention/_material3-definition.scss +0 -1
  626. package/styles/mention/_tailwind-dark-definition.scss +0 -1
  627. package/styles/mention/_tailwind-definition.scss +0 -1
  628. package/styles/mention/_tailwind3-definition.scss +0 -1
  629. package/styles/mention/bds.css +0 -78
  630. package/styles/mention/bds.scss +0 -6
  631. package/styles/mention/bootstrap-dark.css +0 -48
  632. package/styles/mention/bootstrap-dark.scss +0 -6
  633. package/styles/mention/bootstrap.css +0 -48
  634. package/styles/mention/bootstrap.scss +0 -6
  635. package/styles/mention/bootstrap4.css +0 -54
  636. package/styles/mention/bootstrap4.scss +0 -6
  637. package/styles/mention/bootstrap5-dark.css +0 -63
  638. package/styles/mention/bootstrap5-dark.scss +0 -6
  639. package/styles/mention/bootstrap5.3.css +0 -67
  640. package/styles/mention/bootstrap5.3.scss +0 -6
  641. package/styles/mention/bootstrap5.css +0 -63
  642. package/styles/mention/bootstrap5.scss +0 -6
  643. package/styles/mention/fabric-dark.css +0 -48
  644. package/styles/mention/fabric-dark.scss +0 -6
  645. package/styles/mention/fabric.css +0 -48
  646. package/styles/mention/fabric.scss +0 -6
  647. package/styles/mention/fluent-dark.css +0 -63
  648. package/styles/mention/fluent-dark.scss +0 -6
  649. package/styles/mention/fluent.css +0 -63
  650. package/styles/mention/fluent.scss +0 -6
  651. package/styles/mention/fluent2.css +0 -80
  652. package/styles/mention/fluent2.scss +0 -6
  653. package/styles/mention/highcontrast-light.css +0 -60
  654. package/styles/mention/highcontrast-light.scss +0 -6
  655. package/styles/mention/highcontrast.css +0 -60
  656. package/styles/mention/highcontrast.scss +0 -6
  657. package/styles/mention/material-dark.css +0 -48
  658. package/styles/mention/material-dark.scss +0 -6
  659. package/styles/mention/material.css +0 -48
  660. package/styles/mention/material.scss +0 -6
  661. package/styles/mention/material3-dark.css +0 -53
  662. package/styles/mention/material3-dark.scss +0 -7
  663. package/styles/mention/material3.css +0 -55
  664. package/styles/mention/material3.scss +0 -7
  665. package/styles/mention/tailwind-dark.css +0 -69
  666. package/styles/mention/tailwind-dark.scss +0 -6
  667. package/styles/mention/tailwind.css +0 -69
  668. package/styles/mention/tailwind.scss +0 -6
  669. package/styles/mention/tailwind3.css +0 -67
  670. package/styles/mention/tailwind3.scss +0 -6
  671. package/styles/multi-select/_all.scss +0 -2
  672. package/styles/multi-select/_bds-definition.scss +0 -230
  673. package/styles/multi-select/_bigger.scss +0 -2002
  674. package/styles/multi-select/_bootstrap-dark-definition.scss +0 -198
  675. package/styles/multi-select/_bootstrap-definition.scss +0 -187
  676. package/styles/multi-select/_bootstrap4-definition.scss +0 -236
  677. package/styles/multi-select/_bootstrap5-dark-definition.scss +0 -1
  678. package/styles/multi-select/_bootstrap5-definition.scss +0 -229
  679. package/styles/multi-select/_bootstrap5.3-definition.scss +0 -229
  680. package/styles/multi-select/_fabric-dark-definition.scss +0 -190
  681. package/styles/multi-select/_fabric-definition.scss +0 -181
  682. package/styles/multi-select/_fluent-dark-definition.scss +0 -1
  683. package/styles/multi-select/_fluent-definition.scss +0 -236
  684. package/styles/multi-select/_fluent2-definition.scss +0 -234
  685. package/styles/multi-select/_fusionnew-definition.scss +0 -222
  686. package/styles/multi-select/_highcontrast-definition.scss +0 -302
  687. package/styles/multi-select/_highcontrast-light-definition.scss +0 -296
  688. package/styles/multi-select/_layout.scss +0 -1330
  689. package/styles/multi-select/_material-dark-definition.scss +0 -248
  690. package/styles/multi-select/_material-definition.scss +0 -250
  691. package/styles/multi-select/_material3-dark-definition.scss +0 -1
  692. package/styles/multi-select/_material3-definition.scss +0 -233
  693. package/styles/multi-select/_tailwind-dark-definition.scss +0 -1
  694. package/styles/multi-select/_tailwind-definition.scss +0 -230
  695. package/styles/multi-select/_tailwind3-definition.scss +0 -227
  696. package/styles/multi-select/_theme.scss +0 -564
  697. package/styles/multi-select/bds.css +0 -1579
  698. package/styles/multi-select/bds.scss +0 -10
  699. package/styles/multi-select/bootstrap-dark.css +0 -1386
  700. package/styles/multi-select/bootstrap-dark.scss +0 -10
  701. package/styles/multi-select/bootstrap.css +0 -1374
  702. package/styles/multi-select/bootstrap.scss +0 -10
  703. package/styles/multi-select/bootstrap4.css +0 -1522
  704. package/styles/multi-select/bootstrap4.scss +0 -10
  705. package/styles/multi-select/bootstrap5-dark.css +0 -1446
  706. package/styles/multi-select/bootstrap5-dark.scss +0 -10
  707. package/styles/multi-select/bootstrap5.3.css +0 -1450
  708. package/styles/multi-select/bootstrap5.3.scss +0 -10
  709. package/styles/multi-select/bootstrap5.css +0 -1446
  710. package/styles/multi-select/bootstrap5.scss +0 -10
  711. package/styles/multi-select/fabric-dark.css +0 -1389
  712. package/styles/multi-select/fabric-dark.scss +0 -10
  713. package/styles/multi-select/fabric.css +0 -1379
  714. package/styles/multi-select/fabric.scss +0 -10
  715. package/styles/multi-select/fluent-dark.css +0 -1490
  716. package/styles/multi-select/fluent-dark.scss +0 -10
  717. package/styles/multi-select/fluent.css +0 -1490
  718. package/styles/multi-select/fluent.scss +0 -10
  719. package/styles/multi-select/fluent2.css +0 -1706
  720. package/styles/multi-select/fluent2.scss +0 -10
  721. package/styles/multi-select/highcontrast-light.css +0 -1490
  722. package/styles/multi-select/highcontrast-light.scss +0 -10
  723. package/styles/multi-select/highcontrast.css +0 -1506
  724. package/styles/multi-select/highcontrast.scss +0 -10
  725. package/styles/multi-select/icons/_bds.scss +0 -26
  726. package/styles/multi-select/icons/_bootstrap-dark.scss +0 -30
  727. package/styles/multi-select/icons/_bootstrap.scss +0 -30
  728. package/styles/multi-select/icons/_bootstrap4.scss +0 -32
  729. package/styles/multi-select/icons/_bootstrap5-dark.scss +0 -1
  730. package/styles/multi-select/icons/_bootstrap5.3.scss +0 -30
  731. package/styles/multi-select/icons/_bootstrap5.scss +0 -30
  732. package/styles/multi-select/icons/_fabric-dark.scss +0 -30
  733. package/styles/multi-select/icons/_fabric.scss +0 -30
  734. package/styles/multi-select/icons/_fluent-dark.scss +0 -1
  735. package/styles/multi-select/icons/_fluent.scss +0 -38
  736. package/styles/multi-select/icons/_fluent2.scss +0 -347
  737. package/styles/multi-select/icons/_fusionnew.scss +0 -26
  738. package/styles/multi-select/icons/_highcontrast-light.scss +0 -26
  739. package/styles/multi-select/icons/_highcontrast.scss +0 -30
  740. package/styles/multi-select/icons/_material-dark.scss +0 -348
  741. package/styles/multi-select/icons/_material.scss +0 -348
  742. package/styles/multi-select/icons/_material3-dark.scss +0 -1
  743. package/styles/multi-select/icons/_material3.scss +0 -350
  744. package/styles/multi-select/icons/_tailwind-dark.scss +0 -1
  745. package/styles/multi-select/icons/_tailwind.scss +0 -30
  746. package/styles/multi-select/icons/_tailwind3.scss +0 -26
  747. package/styles/multi-select/material-dark.css +0 -2605
  748. package/styles/multi-select/material-dark.scss +0 -10
  749. package/styles/multi-select/material.css +0 -2629
  750. package/styles/multi-select/material.scss +0 -10
  751. package/styles/multi-select/material3-dark.css +0 -2947
  752. package/styles/multi-select/material3-dark.scss +0 -11
  753. package/styles/multi-select/material3.css +0 -2949
  754. package/styles/multi-select/material3.scss +0 -11
  755. package/styles/multi-select/tailwind-dark.css +0 -1429
  756. package/styles/multi-select/tailwind-dark.scss +0 -10
  757. package/styles/multi-select/tailwind.css +0 -1429
  758. package/styles/multi-select/tailwind.scss +0 -10
  759. package/styles/multi-select/tailwind3.css +0 -1402
  760. package/styles/multi-select/tailwind3.scss +0 -10
  761. package/tslint.json +0 -111
@@ -1 +0,0 @@
1
- {"version":3,"file":"ej2-dropdowns.min.js","sources":["../../src/common/incremental-search.js","../../src/common/highlight-search.js","../../src/multi-select/float-label.js","../../src/common/virtual-scroll.js","../../src/drop-down-base/drop-down-base.js","../../src/drop-down-list/drop-down-list.js","../../src/drop-down-tree/drop-down-tree.js","../../src/combo-box/combo-box.js","../../src/auto-complete/auto-complete.js","../../src/multi-select/multi-select.js","../../src/multi-select/checkbox-selection.js","../../src/list-box/list-box.js","../../src/mention/mention.js","../../src/global.js"],"sourcesContent":["/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content.\n *\n * @param {number} keyCode - Specifies the key code which pressed on keyboard events.\n * @param {HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param {number} selectedIndex - Specifies the selected item in list item, so that search will happen after selected item otherwise it will do from initial.\n * @param {boolean} ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @param {boolean} [queryStringUpdated] - Optional parameter.\n * @param {string} [currentValue] - Optional parameter.\n * @param {boolean} [isVirtual] - Optional parameter.\n * @param {boolean} [refresh] - Optional parameter.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString !== '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString === prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 !== index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n// eslint-disable-next-line valid-jsdoc\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} [ignoreCase=true] - Specifies the case sensitive option for search operation.\n * @param {(string | number | boolean | { [key: string]: Object })[]} [dataSource] - Specifies the data source.\n * @param {{ text: string, value: string }} [fields] - Specifies the fields.\n * @param {string} [type] - Specifies the type.\n * @returns {{ item: Element | null, index: number | null }} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type, ignoreAccent) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if ((type === 'object' && !data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1 && data[fields.value] != null && checkField_1.getAttribute('data-value') === data[fields.value].toString()) ||\n (type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1)) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n var text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if (ignoreAccent && text && queryStr) {\n text = text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n queryStr = queryStr.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, 'g').test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/**\n * @param {string} value - The value to escape.\n * @returns {string} Returns the escaped string.\n */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n/**\n * @param {string} elementId - The ID of the list element.\n * @returns {void}\n */\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<span class=\"e-highlight\">$1</span>');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n floatLabelElement.setAttribute('for', element.id);\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '<input placeholder=\"' + placeholder + '\"/>';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EventHandler, Browser, select, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2)\n <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n }, axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function () {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n }\n else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = (totalData === this.parent.totalItemCount &&\n this.parent.queryString !== this.parent.typedString) ? true : this.parent.isCustomFilter;\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\n this.parent.isCustomFilter = tempCustomFilter;\n };\n VirtualScroll.prototype.removeSkipAndTakeEvents = function (query) {\n query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder && this.parent.targetElement().trim() === '') {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount && this.parent.value.length !== this.parent.totalItemCount) {\n var oldUlElement_1 = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement_1) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement_1);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0)\n .take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ?\n this.parent.appendUncheckList : false;\n isListUpdated = false;\n }\n else {\n var oldUlElement_2 = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement_2) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement_2);\n }\n }\n isListUpdated = false;\n }\n else if (this.parent.viewPortInfo.startIndex !== 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex !== 0 &&\n this.parent.viewPortInfo.startIndex - this.parent.value.length !== this.parent.itemCount &&\n (this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length)) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n }\n else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone(); // Assuming query is of type any\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0\n ? this.parent.viewPortInfo.startIndex - this.parent.value.length\n : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox') {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + '.e-reorder');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value &&\n value !== null &&\n Array.isArray(this.parent.value) &&\n this.parent.value.length > 0 &&\n this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount + this.parent.value.length &&\n this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n }\n else if (this.parent.value === null || (this.parent.value && this.parent.value.length === 0)) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length !== this.parent.itemCount) {\n if (this.parent.hideSelectedItem) {\n var query = this.parent.value && this.parent.value.length > 0 ?\n this.parent.getForQuery(this.parent.value).clone() : new Query;\n if (this.parent.value && (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount +\n this.parent.value.length) && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n }\n else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex === 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex === this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n this.parent.checkMaxSelection();\n }\n this.parent.getSkeletonCount();\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 && this.parent.totalItemCount < this.parent.itemCount * 2 &&\n ((!(this.parent.dataSource instanceof DataManager)) || ((this.parent.dataSource instanceof DataManager) &&\n (this.parent.totalItemCount <= this.parent.itemCount))) ? 0 : this.parent.skeletonCount;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n 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 &&\n this.parent.isScrollChanged &&\n this.parent.hideSelectedItem &&\n !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised &&\n !(this.parent.totalItemCount === queryStartIndex &&\n this.parent.totalItemCount === queryEndIndex)) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' &&\n this.parent.hideSelectedItem &&\n this.parent.value &&\n Array.isArray(this.parent.value) &&\n this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' &&\n this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) ||\n (this.parent.dataSource instanceof DataManager &&\n !this.parent.isRequesting)) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString !== this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 &&\n this.parent.totalItemCount < (this.parent.itemCount * 2) && ((!(this.parent.dataSource instanceof DataManager)) ||\n ((this.parent.dataSource instanceof DataManager) && (this.parent.totalItemCount <= this.parent.itemCount))) ?\n 0 : this.parent.skeletonCount;\n }\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null &&\n (!(this.parent.dataSource instanceof DataManager) ||\n (this.parent.dataSource instanceof DataManager &&\n !this.parent.isRequesting))) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.parent.getTransformValues();\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement ?\n this.parent.popupContentElement.getBoundingClientRect().height : 0;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.virtualItemCount / 2 + pageSizeBy4)))\n && infoType.endIndex !== totalItemCount)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.virtualItemCount)\n : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount\n ? (infoType.endIndex - this.parent.virtualItemCount > 0\n ? infoType.endIndex - this.parent.virtualItemCount\n : 0)\n : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n }\n else if (infoType.direction === 'up') {\n if ((infoType.startIndex && infoType.endIndex) || (Math.ceil(exactTopIndex) > this.parent.previousStartIndex)) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex || (Math.ceil(exactTopIndex) > this.parent.previousStartIndex)) {\n var idxAddedToExactTop = (pageSizeBy4) > infoViewIndices ? pageSizeBy4 :\n (infoViewIndices + infoViewIndices / 4);\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = (eIndex < totalItemCount) ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n }\n else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex !== pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = 'translate(0px,' + top + 'px)';\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"disabled\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group',\n virtualList: 'e-list-item e-virtual-list'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.isVirtualReorder = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.isDynamicData = false;\n _this.isPrimitiveData = false;\n _this.isCustomFiltering = false;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n if (!isNullOrUndefined(this.listData)) {\n var dataSource = this.listData;\n var fields_1 = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields_1.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields_1.text, item).toString(), text)) {\n value = getValue(fields_1.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields_1.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) &&\n itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields_1.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields_1.text, item), text)) {\n value = getValue(fields_1.value, item);\n }\n });\n }\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if ((!isNullOrUndefined(this.noRecordsTemplate) && this.noRecordsTemplate !== 'No records found') || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || ((noDataElement[i] instanceof Text) && (noDataElement[i]).textContent !== '')) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount < this.itemCount * 2 && ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2)) && ((!(this.dataSource instanceof DataManager)) || ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount)))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 && this.listItemHeight > 0 ?\n Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ?\n this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return 'height: 0px;';\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = ((this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0) ||\n this.skeletonCount === 0) ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = (this.listItemHeight - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10)) + 'px';\n }\n var skeleton = new Skeleton({\n shape: 'Text',\n height: '10px',\n width: '95%',\n cssClass: 'e-skeleton-text'\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n if (isContainSkeleton.firstChild) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue &&\n this.properties.value &&\n this.properties.value instanceof Array &&\n this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number' ||\n item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean' ||\n item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var group = element.querySelectorAll('select>optgroup');\n var fields;\n var isSelectGroupCheck = this.getModuleName() === 'multiselect' && this.isGroupChecking && group.length > 0;\n fields = isSelectGroupCheck ? { value: 'value', text: 'text', groupBy: 'categeory' } : fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n if (isSelectGroupCheck) {\n this.getJSONfromOption(jsonElement, child, fields, item.label);\n }\n else {\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, isSelectGroupCheck ? fields.groupBy : this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss, this.fields.disabled);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss, disabled) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss,\n disabled: !isNullOrUndefined(disabled) ? disabled : this.fields && this.fields.disabled\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields, category) {\n if (category === void 0) { category = null; }\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n if (!isNullOrUndefined(category)) {\n json[fields.groupBy] = category;\n }\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} event - Specifies the event which is the reason for the invocation of this method.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count !== 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal') && !_this.isCustomFiltering) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n _this.isCustomFiltering = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) ||\n (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n 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 _this.updatePopupPosition();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled &&\n _this.virtualGroupDataSource\n && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) :\n new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count !== 0 &&\n listItems.count < (_this.itemCount * 2)) && !_this.appendUncheckList) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal') && !_this.isCustomFiltering) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) &&\n !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) &&\n !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length :\n listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n _this.isCustomFiltering = false;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupPosition = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return Object.prototype.hasOwnProperty.call(item, key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML === '') {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n if (this.fields.disabled) {\n var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);\n for (var index = 0; index < liCollections.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.disabled]) {\n if (!isNullOrUndefined(this.fields.groupBy)) {\n var item = this.listData[index];\n var value = getValue((this.fields.value ? this.fields.value : 'value'), item);\n var li = listElement.querySelector('li[data-value=\"' + value + '\"]');\n if (!isNullOrUndefined(li)) {\n this.disableListItem(li);\n }\n }\n else {\n this.disableListItem(liCollections[index]);\n }\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n if (this.isVirtualizationEnabled && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n focusItem = elements && elements.length > 0 ? elements[2] : focusItem;\n }\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var fieldSet = fields.properties ||\n fields;\n dataSource = ListBase.groupDataSource(dataSource, fieldSet, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else if (this.getModuleName() !== 'listbox' || (this.getModuleName() === 'listbox' && !this.preventDefActionFilter)) {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var computedHeight = getComputedStyle(this.getValidLi(), null).getPropertyValue('height');\n var computedMarginValue = getComputedStyle(this.getValidLi(), null).getPropertyValue('margin-bottom');\n var marginValue = parseInt(computedMarginValue, 10);\n var liHeight = this.getModuleName() === 'multiselect' ? parseFloat(computedHeight) : parseInt(computedHeight, 10);\n var topIndex = Math.round(target.scrollTop / (liHeight + marginValue));\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n if (this.list) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n }\n else {\n return 0;\n }\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) &&\n liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {\n var ulElement;\n if (this.itemTemplate && listData) {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else if (this.getModuleName() !== 'listbox' || (this.getModuleName() === 'listbox' && !this.preventDefActionFilter)) {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n if (this.getModuleName() === 'multiselect' && this.isCheckBoxSelection && this.appendUncheckList && this.list && this.list.querySelector('.e-active')) {\n virtualUlElement.appendChild(ulElement);\n isCheckBoxUpdate = true;\n }\n else {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if (!virtualUlElement) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if ((!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) || (oldUlElement && this.isVirtualReorder && this.list.querySelector('.e-list-parent' + '.e-reorder'))) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.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 var ulElement;\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n ulElement = ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n else {\n ulElement = ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n if (!isNullOrUndefined(firstLi)) {\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = [];\n if (this.fields.disabled && this.getModuleName() === 'multiselect' && this.liCollections) {\n listItems = this.liCollections;\n }\n else {\n listItems = this.getItems();\n }\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @param {HTMLElement} ulElement - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.isPrimitiveData = true;\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) &&\n isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n this.isPrimitiveData = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n if (this.getModuleName() === 'listbox') {\n if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {\n this.updateDataSource(updateData, oldProp);\n }\n }\n else {\n this.isDynamicData = true;\n this.updateDataSource(updateData, oldProp);\n }\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n var elements = this.getScrollableParent();\n for (var i = 0; i < elements.length; i++) {\n var ele = elements[i];\n EventHandler.add(ele, 'scroll', this.updateGroupFixedHeader, this);\n }\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.getScrollableParent = function () {\n var eleStyle = getComputedStyle(this.element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = this.element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n scrollParents.push(document);\n return scrollParents;\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ?\n this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index + i);\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.\n insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n if (itemIndex && this.getModuleName() === 'listbox') {\n this.ulElement.insertBefore(liCollections[i], this.ulElement.childNodes[itemIndex + i]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n /**\n * Checks if the given HTML element is disabled.\n *\n * @param {HTMLElement} li - The HTML element to check.\n * @returns {boolean} - Returns true if the element is disabled, otherwise false.\n */\n DropDownBase.prototype.isDisabledElement = function (li) {\n if (li && li.classList.contains('e-disabled')) {\n return true;\n }\n return false;\n };\n /**\n * Checks whether the list item at the specified index is disabled.\n *\n * @param {number} index - The index of the list item to check.\n * @returns {boolean} True if the list item is disabled, false otherwise.\n */\n DropDownBase.prototype.isDisabledItemByIndex = function (index) {\n if (this.fields.disabled && this.liCollections) {\n return this.isDisabledElement(this.liCollections[index]);\n }\n return false;\n };\n /**\n * Disables the given list item.\n *\n * @param { HTMLLIElement } li - The list item to disable.\n * @returns {void}\n */\n DropDownBase.prototype.disableListItem = function (li) {\n li.classList.add('e-disabled');\n li.setAttribute('aria-disabled', 'true');\n li.setAttribute('aria-selected', 'false');\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n resizeIcon: 'e-resizer-right e-icons',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isTouched = false;\n _this.isFocused = false;\n _this.autoFill = false;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n _this.isReactTemplateUpdate = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.fields.disabled ? this.ulElement.querySelector('.' + dropDownListClasses.li + ':not(.e-disabled)') : this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) ||\n (this.allowObjectBinding && this.previousValue &&\n this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :\n dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n this.checkAndResetCache();\n if (this.enableVirtualization && this.list) {\n this.updateInitialData();\n }\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\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 if (!isNullOrUndefined(this.inputElement) && !isNullOrUndefined(this.inputElement.parentElement)) {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'false');\n this.inputWrapper.container.removeAttribute('disabled');\n }\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n if (this.inputWrapper && this.inputWrapper.container) {\n this.inputWrapper.container.setAttribute('aria-disabled', 'true');\n this.inputWrapper.container.setAttribute('disabled', '');\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n /**\n * Checks if the given value is disabled.\n *\n * @param { string | number | boolean | object } value - The value to check for disablement. Can be a string, number, boolean, or object.\n * @returns { boolean } A boolean indicating whether the value is disabled.\n */\n DropDownList.prototype.isDisableItemValue = function (value) {\n if (typeof (value) === 'object') {\n var objectValue = JSON.parse(JSON.stringify(value))[this.fields.value];\n return this.isDisabledItemByIndex(this.getIndexByValue(objectValue));\n }\n return this.isDisabledItemByIndex(this.getIndexByValue(value));\n };\n DropDownList.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n this.isFocused = false;\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n this.isFocused = true;\n };\n DropDownList.prototype.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n DropDownList.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Store the initial dimensions of the popup\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n // Wire up events for resizing\n this.resizingWireEvent();\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n if (this.list && this.list.parentElement) {\n // Minimum width and height (100px)\n var minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth = minWidth || 100;\n minHeight = minHeight || 120;\n // Ensure the new width and height are not less than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n // Unwire the resize event listeners\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault(); // Prevent selection behavior if event exists\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString === '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() === this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) ||\n this.incrementalEndIndex === 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex === 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount :\n this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ?\n this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) &&\n this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ?\n this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ?\n this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ?\n this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop +\n (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop -\n (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = void 0;\n if (this.fields.disabled) {\n var enableLiCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.e-disabled)');\n li = incrementalSearch(e.charCode, enableLiCollections, this.activeIndex, true, this.element.id);\n }\n else {\n li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n }\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n var filterIndex = this.getIndexByValue(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop +\n (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 ?\n this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop -\n (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] &&\n this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) :\n this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex === 0 && this.fields.groupBy ?\n this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) <\n (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount :\n this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value = this.liCollections[0].getAttribute('data-value') !== 'null' ?\n this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ?\n this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== 'null' ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownListClasses.focus)\n || this.liCollections[index].classList.contains(dropDownListClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n if (this.getModuleName() !== 'autocomplete') {\n if (this.liCollections.length - 1 === itemIndex && e.action === 'down') {\n e.action = 'up';\n }\n if (itemIndex === 0 && e.action === 'up') {\n e.action = 'down';\n }\n }\n this.updateUpDownAction(e);\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ?\n this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 :\n this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ?\n this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() :\n this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ?\n (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {\n var validIndex = steps >= 0 ? steps + 1 : 0;\n while (validIndex < this.liCollections.length) {\n previousItem = this.liCollections[validIndex];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n validIndex--;\n if (validIndex < 0) {\n return;\n }\n }\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ?\n this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' &&\n !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' &&\n !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {\n while (steps >= 0 && steps < this.liCollections.length) {\n previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (previousItem && !previousItem.classList.contains('e-disabled')) {\n break;\n }\n steps++;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n proxy_1.isSecondClick = proxy_1.isReact && proxy_1.isFiltering() && proxy_1.dataSource instanceof DataManager && !proxy_1.list.querySelector('ul') ? false : true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== null ?\n this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData !== selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == 'object' &&\n !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n this.isTouched = !isNullOrUndefined(e);\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding &&\n (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom &&\n this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ?\n this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = !this.isPrimitiveData ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ?\n this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) ||\n (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ?\n this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) ||\n (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n if (isNullOrUndefined(li)) {\n this.previousValue = this.value;\n }\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @param {boolean} isCustomValue - Specifies whether the value is custom value or not.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ?\n this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n var option = document.createElement('option');\n option.text = this.text;\n option.setAttribute('selected', '');\n this.hiddenElement.appendChild(option);\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.filterArgs = e;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n if (!this.getInitialData) {\n this.searchLists(e);\n }\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ?\n this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex !== 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ?\n filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ?\n this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n alreadySkipAdded = false;\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ?\n queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.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 this.isRequesting = false;\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 ? query.clone() : query;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = ((!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ||\n this.getInitialData) ? false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualContentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualContentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n if (this.filterInput && this.filterInput.value === '' && this.getModuleName() === 'combobox') {\n this.executeCloneElements();\n }\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice && this.isDeviceFullScreen) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n if (!isNullOrUndefined(e) && !isNullOrUndefined(e.data) && e.data.length > 1 && this.autoFill && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.inputElement.value = e.data;\n }\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n if (_this.getModuleName() === 'combobox' && _this.isFiltering() && isNullOrUndefined(_this.list)) {\n _this.renderList();\n }\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n this.getInitialData = false;\n this.isReactTemplateUpdate = true;\n this.searchLists(this.filterArgs);\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_1 : x[checkField_1] === value_1;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_1 : x[checkField_1] === value_1;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_1)))\n .then(function (e) {\n if (e.result.length > 0) {\n _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.isReact) && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n if (this.isDynamicData) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n this.selectedLI = this.getElementByValue(currentValue);\n this.isDynamicData = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) &&\n this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) &&\n !this.enableVirtualization) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var isValidAddition = !isNullOrUndefined(this.value) && selectedItem && selectedItem.getAttribute('data-value') === value.toString();\n if (isValidAddition) {\n this.addNewItem(list, selectedItem);\n }\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount !== this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_2 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_2) ||\n (getValue(_this.fields.value, data) === value_2));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ?\n this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n var initialPopupHeight;\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ?\n formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n _this.isUpdateHeaderHeight = _this.header.offsetHeight !== 0;\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n _this.isUpdateFooterHeight = _this.footer.offsetHeight !== 0;\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n initialPopupHeight = popupEle.clientHeight;\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) +\n parseInt(window.getComputedStyle(listitems[0]).marginBottom, 10) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) && ((!(_this.dataSource instanceof DataManager)) ||\n ((_this.dataSource instanceof DataManager) && (_this.totalItemCount <= _this.itemCount))) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n var virtualContentElement = _this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualContentElement.style.cssText = _this.getTransformValues();\n _this.list.appendChild(virtualContentElement).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virtualElement = _this.createElement('div', {\n id: _this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = _this.GetVirtualTrackHeight();\n popupEle.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) &&\n _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) -\n (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) -\n (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && _this.isDeviceFullScreen && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) &&\n !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout() && _this.isDeviceFullScreen) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (_this.isReact && _this.isFiltering() && _this.dataSource instanceof DataManager && _this.list.querySelector('ul') && !_this.isSecondClick) {\n _this.executeCloneElements();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto' && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n if (_this.allowResize && (_this.getModuleName() !== 'dropdownlist' || !(Browser.isDevice && _this.isDeviceFullScreen && _this.allowFiltering))) {\n var resizePaddingBottom = 16;\n // Create the resizer div\n _this.resizer = _this.createElement('div', {\n id: _this.element.id + '_resize-popup',\n className: dropDownListClasses.resizeIcon // Adding class for styling\n });\n // Add the resizer div to the popup\n if (_this.list && _this.list.parentElement) {\n _this.list.parentElement.classList.add('e-resize');\n if (_this.popupHeight.toString().toLowerCase() !== 'auto' && initialPopupHeight >= (parseInt(_this.popupHeight.toString(), 10) - 2)) {\n _this.list.parentElement.style.height = '100%';\n }\n _this.list.parentElement.style.paddingBottom = (_this.getModuleName() === 'dropdownlist' && _this.allowFiltering && _this.searchBoxHeight) ? (_this.searchBoxHeight + resizePaddingBottom).toString() + 'px' : resizePaddingBottom.toString() + 'px';\n if (_this.header || _this.footer || _this.itemTemplate) {\n _this.list.parentElement.style.paddingBottom = ((parseInt(_this.list.parentElement.style.maxHeight, 10) - parseInt(_this.list.style.maxHeight, 10)) + resizePaddingBottom).toString() + 'px';\n }\n _this.list.parentElement.appendChild(_this.resizer);\n //hold the popup resize\n _this.list.parentElement.style.width = _this.resizeWidth + \"px\";\n _this.list.parentElement.style.height = _this.resizeHeight + \"px\";\n _this.list.parentElement.style.maxHeight = _this.resizeHeight + \"px\";\n _this.list.style.maxHeight = _this.resizeHeight + \"px\";\n }\n // Attach mouse and touch events to the resizer\n EventHandler.add(_this.resizer, 'mousedown', _this.startResizing, _this);\n EventHandler.add(_this.resizer, 'touchstart', _this.startResizing, _this);\n }\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list.length > 0) {\n _this.isActive = true;\n if (_this.isReactTemplateUpdate && _this.isReact && _this.itemTemplate && !_this.enableVirtualization) {\n _this.actionCompleteData.ulElement = _this.renderItems(_this.actionCompleteData.list, _this.fields);\n _this.isReactTemplateUpdate = false;\n }\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n else if (_this.enableVirtualization) {\n _this.focusIndexItem();\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight &&\n elementRect.right <= window.innerWidth);\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight + parseInt(window.getComputedStyle(firstItem).marginBottom, 10);\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (width.indexOf('px') > -1) && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI &&\n !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ?\n this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight +\n selectedListMargin)) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 :\n nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction === 'pageDown' ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue &&\n currentElementValue === lastElementValue && keyAction !== 'end' && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageDown' ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction === 'end') {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction === 'pageDown' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +\n (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction === 'down')) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var selectedListMargin = this.selectedLI &&\n !isNaN(parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(this.selectedLI).marginBottom, 10) : 0;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?\n this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * (this.selectedLI.offsetHeight +\n selectedListMargin)) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight +\n selectedListMargin)) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ?\n this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * (this.selectedLI.offsetHeight + selectedListMargin)) +\n (this.selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction === 'pageUp' ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction === 'pageUp' ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue &&\n currentElementValue === firstElementValue && keyAction !== 'home' && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= (this.selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction === 'home') {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction === 'pageUp' && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action === 'up' || e.action === 'pageUp' || e.action === 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ?\n this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) &&\n !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout() && this.isDeviceFullScreen) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ?\n this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' &&\n !isNullOrUndefined(this.typedString) && this.typedString !== '') || (this.getModuleName() === 'combobox' &&\n this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString !== '')) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount === 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (_this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: _this.filterInput,\n floatLabelType: _this.floatLabelType,\n properties: { placeholder: _this.filterBarPlaceholder },\n buttons: _this.clearIconElement\n }, _this.clearIconElement);\n }\n _this.filterInputObj = null;\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ?\n this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n if (isNullOrUndefined(currentData)) {\n return;\n }\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = '';\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n if (this.resizer) {\n EventHandler.remove(this.resizer, 'mousedown', this.startResizing);\n EventHandler.remove(this.resizer, 'touchstart', this.startResizing);\n }\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) &&\n closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': dropDownListClasses.hiddenElement\n }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) &&\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n }\n else if (this.getModuleName() === 'dropdownlist') {\n if (!this.targetElement().hasAttribute('aria-label')) {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) :\n selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ?\n this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height) +\n parseInt(window.getComputedStyle(item).marginBottom, 10);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n if (this.list && !(this.isReact)) {\n this.list.innerHTML = '';\n }\n else {\n this.list = null;\n }\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) ||\n ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) &&\n !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ?\n getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n var index = isNullOrUndefined(value) ? null : this.index;\n if ((isNullOrUndefined(index) && (currentValue === value)) || this.isAngular) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n else {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'index': index, 'value': value });\n }\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) &&\n isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (this_1.fields.disabled) {\n newProp.text = newProp.text && !this_1.isDisabledItemByIndex(this_1.getIndexByValue(this_1.getValueByText(newProp.text)))\n ? newProp.text : null;\n }\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (this_1.fields.disabled) {\n newProp.value = newProp.value != null && !this_1.isDisableItemValue(newProp.value) ? newProp.value : null;\n }\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) &&\n this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?\n getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_3 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?\n getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_3)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (this_1.fields.disabled) {\n newProp.index = newProp.index != null && !this_1.isDisabledItemByIndex(newProp.index) ? newProp.index : null;\n }\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) &&\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ?\n getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null &&\n this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (!this.isSecondClick && !this.isDropDownClick) {\n this.executeCloneElements();\n }\n };\n DropDownList.prototype.executeCloneElements = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n setTimeout(function () {\n proxy.cloneElements();\n proxy.isSecondClick = proxy.isReact && proxy.isFiltering() && proxy.dataSource instanceof DataManager && !proxy.list.querySelector('ul') ? false : true;\n }, duration);\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n if (li.classList.contains(dropDownListClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(dropDownListClasses.selected)) {\n this.clear();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container && this.inputWrapper.container.parentElement) {\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n }\n delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0]\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"isDeviceFullScreen\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowResize\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"resizeStart\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(true)\n ], TreeSettings.prototype, \"checkDisabledChildren\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * <input type=\"text\" id=\"tree\"></input>\n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n _this.documentClickContext = _this.onDocumentClick.bind(_this);\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n if (!isNOU(this.element.id)) {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id + '_textbox' } });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n }\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.setOldValue();\n if (!this.isRemoteData) {\n this.isInitialized = true;\n }\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate || this.valueTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n this.keyboardModule = new KeyboardEvents(this.filterObj.element, {\n keyAction: this.filterKeyAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.filterKeyAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n addClass([_this.inputWrapper], [INPUTFOCUS]);\n break;\n case 'moveDown':\n e.preventDefault();\n _this.filterObj.element.blur();\n focusedElement = _this.treeObj.element.querySelector('li');\n if (focusedElement) {\n focusedElement.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n _this.treeObj.element.classList.remove('e-filtering');\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n _this.treeObj.element.classList.add('e-filtering');\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n }\n else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n _this.treeObj.element.classList.add('e-filtering');\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n }\n else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.popupObj) {\n _this.popupObj.refreshPosition();\n }\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNOU(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node, isChild, isChildFiltering)) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n }\n else {\n filteredItems.child = null;\n filteredItems = (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n var filteredChild = this.nestedChildFilter(value, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.nestedChildFilter(value, children[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n var matchedData = [];\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n var parentId = matchedData[parseInt(i.toString(), 10)][this.fields.parentValue];\n while (!isNOU(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n var value_1 = this.treeData[parseInt(j.toString(), 10)][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue && !isNOU(this.fields.child.text)) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n this.keyboardModule.destroy();\n if (this.showSelectAll && this.checkAllParent) {\n EventHandler.remove(this.checkAllParent, 'mouseup', this.clickHandler);\n }\n document.removeEventListener('mousedown', this.documentClickContext);\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (isValue && this.mode !== 'Custom') {\n this.showOrHideValueTemplate(true);\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.setOldValue();\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n }\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.setOldValue();\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(false, true);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(true);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n case 'tab':\n if (!_this.isPopupOpen && _this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n e.preventDefault();\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]') || _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n break;\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n if (this.valueTemplate) {\n remaining = this.updateChipAndValueTemplate(false, downIconWidth, remainSize);\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n this.updateDelimMode();\n return;\n }\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n remaining = this.updateChipAndValueTemplate(true, downIconWidth, remainSize);\n }\n }\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.checkRemainingTemplate = function (remaining, remainElement, remainContent, totalContent) {\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.updateChipAndValueTemplate = function (isChip, downIconWidth, remainSize) {\n if (downIconWidth === void 0) { downIconWidth = 0; }\n var currentHtmlContent = '';\n var overAllContainer;\n var previousHtmlContent;\n var previousData;\n var index = 1;\n var wrapperLength;\n var remainingItemsCount;\n addClass([isChip ? this.chipWrapper : this.valueTemplateContainer], HIDEICON);\n var clonedElement = (isChip ? this.chipWrapper :\n this.valueTemplateContainer).cloneNode(true);\n var valueElements = isChip ? selectAll('.' + CHIP, clonedElement) : Array.prototype.slice.call(clonedElement.children);\n for (var i = 0; i < valueElements.length; i++) {\n previousHtmlContent = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(valueElements[i]);\n currentHtmlContent = this.overFlowWrapper.innerHTML;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperLength + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (previousData !== undefined && previousData !== '') {\n previousHtmlContent = previousData;\n i = index + 1;\n }\n this.overFlowWrapper.innerHTML = previousHtmlContent;\n remainingItemsCount = this.value.length - i;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n while (((wrapperLength + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperLength !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remainingItemsCount++;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperLength + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n previousData = currentHtmlContent;\n index = i;\n }\n else if (i === 0) {\n previousData = '';\n index = -1;\n }\n }\n return remainingItemsCount;\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box' || this.valueTemplateContainer)) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n var selectedData = this.getSelectedData(this.value[parseInt(index.toString(), 10)]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '', 'aria-label': this.getModuleName() }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT, 'aria-label': this.getModuleName() }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.setOldValue();\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', this.inputWrapper.classList.contains('e-disabled') ? '-1' : '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.style.cssText = this.htmlAttributes[\"\" + htmlAttr];\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = this.value.length - 1; i >= 0; i--) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(i, 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.setOldValue();\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.setOldValue();\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value !== null && !(this.value.length === 0)) {\n return;\n }\n if (!this.isInitialized) {\n this.setOldValue();\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValueTemplate = function () {\n var _this = this;\n if (this.valueTemplate) {\n var compiledString = this.initializeValueTemplate();\n this.getValueTemplateElement(this.value[0], compiledString);\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n this.showOrHideValueTemplate(true);\n }\n };\n DropDownTree.prototype.getValueTemplateElement = function (value, compiledString) {\n var selectedData = this.getNodeData(value, this.isFilteredData ? this.treeData : this.treeItems);\n var templateElements = compiledString(selectedData, this, 'valueTemplate', this.element.id + \"valueTemplate\", this.isStringTemplate, undefined, this.valueTemplateContainer);\n if (templateElements) {\n templateElements = Array.prototype.slice.call(templateElements);\n append(templateElements, this.valueTemplateContainer);\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n this.setValueTemplate();\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n if (this.fields.dataSource instanceof DataManager) {\n this.updateSelectedValues();\n }\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.length !== this.treeObj.checkedNodes.length || this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n }).length > 0;\n if (difference || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (!isNOU(this.value) && this.value.length > 0 && !isNOU(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n var text = getValue(this.fields.text, this.treeItems[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n var dataId = getValue(this.fields.text, data[parseInt(i.toString(), 10)]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n var childData = getValue(field.child, data[parseInt(i.toString(), 10)]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n newData = this.getNestedItems(getValue(child, data[parseInt(i.toString(), 10)]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate,\n checkDisabledChildren: this.treeSettings.checkDisabledChildren\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.treeObj.element.classList.remove('e-filtering');\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n }\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showSelectAll || _this.allowFiltering) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.value != null && _this.text != null ? _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[0] + '\"]') : null;\n if (focusedElement) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement.setAttribute('tabindex', '0');\n }\n else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]:not(.e-disable)') ||\n _this.treeObj.element.querySelector('li:not(.e-disable)');\n _this.removeFocus(focusedElement, oldFocussedNode);\n }\n _this.updateFocus(focusedElement);\n }\n if (_this.treeObj.checkedNodes.length > 0 && !_this.isFilterRestore) {\n var nodes = _this.treeObj.element.querySelectorAll('li:not(.e-disable)');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if ((checkedNodes.length === nodes.length) && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.showSelectAll && !_this.allowFiltering) {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n var focusedElement = _this.popupEle.querySelector('.e-selectall-parent');\n _this.removeFocus(focusedElement, oldFocussedNode);\n _this.updateFocus(focusedElement);\n }\n if (_this.allowFiltering) {\n var focusedElement = _this.treeObj.element.querySelector('li.e-node-focus');\n if (!isNOU(focusedElement)) {\n removeClass([focusedElement], 'e-node-focus');\n }\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.removeFocus = function (focusedElement, oldFocusedElement) {\n if (oldFocusedElement && oldFocusedElement !== focusedElement) {\n oldFocusedElement.setAttribute('tabindex', '-1');\n removeClass([oldFocusedElement], 'e-node-focus');\n }\n };\n DropDownTree.prototype.updateFocus = function (focusedElement) {\n if (!isNOU(focusedElement)) {\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n };\n DropDownTree.prototype.reactCallBack = function () {\n if (!isNOU(this.popupObj)) {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n document.addEventListener('mousedown', _this.documentClickContext);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNOU(this.inputWrapper) &&\n this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n if (!this.isFilteredData) {\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n }\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n this.isInitialized = true;\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n if (!this.showSelectAll) {\n this.isFilterRestore = false;\n }\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource)) {\n this.fields.dataSource = [];\n }\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) ||\n !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.setProperties({ value: this.oldValue }, true);\n this.treeObj.dataBind();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.setOldValue();\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n this.setValueTemplate();\n if (!isNOU(this.value) && this.value.length > 0) {\n this.inputWrapper.setAttribute('aria-label', args.nodeData.text.toString());\n }\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.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 || (!this.isFilteredData && args.action === 'check' && this.isFromFilterChange)) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li:not(.e-disable)');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if ((wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 ||\n (!isNOU(args.data[0]) && args.data[0].isChecked === 'false'))) || !args.isInteracted && this.isFilterRestore) {\n this.isFilterRestore = false;\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check'\n && checkedNodes.length === nodes.length\n && (args.isInteracted || this.isCheckAllCalled || (!isNOU(args.data[0]) && args.data[0].isChecked === 'true'))) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.setOldValue();\n }\n };\n DropDownTree.prototype.onNodeExpanded = function () {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value !== null && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n var _this = this;\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length === 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox &&\n !this.ddtCompareValues(this.treeObj.selectedNodes, this.value.slice())) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n selectedValues = selectedValues.filter(function (selectedValue) {\n var nodeData = _this.treeObj.getTreeData(selectedValue);\n if (Array.isArray(nodeData)) {\n return nodeData.every(function (nodeSelectedData) { return nodeSelectedData.selected; });\n }\n return true;\n });\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(true);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value, this.treeItems);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id, dataSource) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = dataSource.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, dataSource[i]);\n if (!isNOU(dataSource[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return dataSource[i];\n }\n }\n }\n else {\n return this.getChildNodeData(dataSource, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.initializeValueTemplate = function () {\n if (!this.valueTemplate) {\n return null;\n }\n if (this.valueTemplateContainer) {\n while (this.valueTemplateContainer.firstChild) {\n this.valueTemplateContainer.removeChild(this.valueTemplateContainer.firstChild);\n }\n }\n else {\n this.valueTemplateContainer = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + SHOW_TEXT + ' ' + 'e-input-value' + ' ' + HIDEICON });\n }\n this.inputWrapper.insertBefore(this.valueTemplateContainer, this.inputEle);\n return this.templateComplier(this.valueTemplate);\n };\n DropDownTree.prototype.showOrHideValueTemplate = function (show, showChip) {\n if (showChip === void 0) { showChip = false; }\n if (!this.valueTemplateContainer || this.mode === 'Box') {\n return;\n }\n if (show) {\n removeClass([this.valueTemplateContainer], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.valueTemplateContainer], HIDEICON);\n if (!showChip) {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n var _this = this;\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n var compiledString = this.initializeValueTemplate();\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '<option selected value =\"' + this.value[i] + '\">' +\n this.selectedText[this.selectedText.length - 1] + '</option>';\n if (this.valueTemplate) {\n this.getValueTemplateElement(this.value[i], compiledString);\n }\n }\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n this.showOrHideValueTemplate(true);\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (!isNOU(this.value) && this.value.length > 0 && !isNOU(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n else {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mouseup', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null || this.value.length === 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (e.target.classList.contains('e-chips-close') && !this.isPopupOpen) {\n e.stopPropagation();\n e.preventDefault();\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (Array.isArray(this.value) && this.value.length === 0 && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.setOldValue();\n this.setProperties({ value: [] }, true);\n this.showOrHideValueTemplate(false);\n }\n if (isNOU(this.value) || this.value.length === 0) {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.setOldValue = function () {\n this.oldValue = Array.isArray(this.value) ? this.value.slice() : this.value;\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n if (prop === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (prop === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (prop === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n else if (prop === 'checkDisabledChildren') {\n this.treeObj.checkDisabledChildren = this.treeSettings.checkDisabledChildren;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n this.portals = [];\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n if (this.treeObj) {\n this.treeObj.element.removeAttribute('aria-activedescendant');\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.e-overflow:not(.e-input-value)', this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n if (JSON.stringify(oldProp.value) !== JSON.stringify(newProp.value)) {\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n }\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n for (var _b = 0, _c = Object.keys(newProp.treeSettings); _b < _c.length; _b++) {\n var prop_1 = _c[_b];\n this.updateTreeSettings(prop_1);\n }\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n Input.setRipple(false, [this.inputObj]);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection || (this.value && this.valueTemplateContainer)) {\n this.element.classList.remove(CHIP_INPUT);\n }\n detach(this.inputObj.container);\n if (this.inputObj.buttons.length) {\n detach(this.inputObj.buttons[0]);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n if (this.chipCollection) {\n var chipsIcons = selectAll('.e-chips-close', this.chipCollection);\n for (var _i = 0, chipsIcons_1 = chipsIcons; _i < chipsIcons_1.length; _i++) {\n var element = chipsIcons_1[_i];\n EventHandler.remove(element, 'mouseup', this.removeChip);\n }\n }\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'footerTemplate', 'itemTemplate', 'actionFailureTemplate',\n 'noRecordsTemplate']);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj, cancel: false };\n this.trigger('close', eventArgs);\n if (eventArgs.cancel) {\n return;\n }\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n if (this.isFilteredData) {\n this.treeObj['treeData'] = this.treeData;\n }\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property('${value.length} item(s) selected')\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-list/drop-down-list-model.d.ts'/>\nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n var text = !isNullOrUndefined(this.text) ? this.text.replace(/\\r\\n|\\n|\\r/g, '') : this.text;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.selectedLI = this.getElementByValue(this.value);\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n var changeData = {};\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n if (isNullOrUndefined(value)) {\n var fields_1 = this.fields;\n var isvalidTextField_1 = false;\n var isValidValue_1 = false;\n if (this.allowObjectBinding) {\n var keys = Object.keys(this.value);\n keys.forEach(function (key) {\n if (key === fields_1.value) {\n isValidValue_1 = true;\n return;\n }\n });\n keys.forEach(function (key) {\n if (key === fields_1.text) {\n isvalidTextField_1 = true;\n return;\n }\n });\n }\n changeData = {\n text: isValidValue_1 ? isvalidTextField_1 ? getValue(fields_1.text, this.value) : getValue(fields_1.value, this.value) : null,\n value: isValidValue_1 ? this.value : null,\n index: null\n };\n }\n }\n if (this.allowObjectBinding) {\n this.setProperties(changeData, true);\n }\n else {\n this.setProperties({ value: value, text: value ? value.toString() : value, index: null }, true);\n }\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) ||\n (this.allowObjectBinding && this.previousValue && this.value &&\n !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding\n ? this.getDataByValue(dataItem.value)\n : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text)\n || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding\n ? this.getDataByValue(dataItem.value)\n : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text)\n || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value });\n if (isNullOrUndefined(li)) {\n this.previousValue = this.value;\n }\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) ||\n (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly ? this.readonly.toString() : 'false',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type, this.ignoreAccent);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n var isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&\n this.incrementalEndIndex <= this.totalItemCount;\n var isIncrementalEndIndexZero = this.incrementalEndIndex === 0;\n if (isEndIndexValid || isIncrementalEndIndexZero) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (isIncrementalEndIndexZero) {\n this.incrementalEndIndex = Math.min(100, this.totalItemCount);\n }\n else {\n this.incrementalEndIndex = Math.min(this.incrementalEndIndex + 100, this.totalItemCount);\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount\n ? this.totalItemCount\n : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0\n ? activeItem.index - ((this.itemCount / 2) - 2)\n : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var startIndex_1 = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount\n ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2)\n : this.totalItemCount;\n var endIndex_1 = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex_1, endIndex_1);\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n 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 var virtualContent = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n virtualContent.style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = activeElement.offsetTop;\n var virtualListInfoStartIndex = this.virtualListInfo && this.virtualListInfo.startIndex\n ? this.virtualListInfo.startIndex\n : 0;\n var virtualListHeight = activeElement.offsetHeight;\n var selectedLiOffsetTopWithStartIndex = selectedLiOffsetTop +\n (virtualListInfoStartIndex * virtualListHeight);\n var virtualListLength = this.list.querySelectorAll('.e-virtual-list').length;\n var scrollTopOffset = virtualListLength * virtualListHeight;\n this.list.scrollTop = selectedLiOffsetTopWithStartIndex - scrollTopOffset;\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) ||\n (this.allowObjectBinding && this.previousValue && currentFillValue &&\n !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) :\n this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.typedString = this.filterInput.value;\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) ||\n (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) ||\n (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) ||\n (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom && this.isFocused) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) ||\n (this.allowObjectBinding && ((previousValue == null && this.value !== null) ||\n (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n this.autoFill = this.autofill;\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var text = !isNullOrUndefined(dataItem.text) ? dataItem.text.replace(/\\r\\n|\\n|\\r/g, '') : dataItem.text;\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"isDeviceFullScreen\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n 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 default value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos\n ? filterQuery.queries[queryElements].e.nos\n : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n var currentTakeValue = this.query.queries[queryElements].e.nos;\n queryTakeValue = takeValue <= currentTakeValue ? currentTakeValue : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n var currentQueryTakeValue = filterQuery.queries[queryElements].e.nos;\n queryTakeValue = currentQueryTakeValue <= queryTakeValue ? queryTakeValue : currentQueryTakeValue;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n 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 this.isRequesting = false;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.enableVirtualization && !isNoDataElement) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n var virtualElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {\n this.focusIndexItem();\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n this.isFiltered = false;\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text\n ? newProp.text\n : newProp && newProp.value\n ? newProp.value\n : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue)\n ? getValue((this.fields.value) ? this.fields.value : '', oldValue)\n : oldValue;\n value = !isNullOrUndefined(value)\n ? getValue((this.fields.value) ? this.fields.value : '', value)\n : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var _this_2 = null || this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n if (newProp && newProp.text) {\n _this_2.setOldText(oldValue);\n }\n else if (newProp && newProp.value) {\n _this_2.setOldValue(oldValue);\n }\n else {\n _this_2.updateValues();\n }\n }\n });\n }\n else if (newProp) {\n if (newProp.text) {\n this.setOldText(oldValue);\n }\n else {\n this.setOldValue(oldValue);\n }\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { isCollide, Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\nvar RESIZE_ICON = 'e-resizer-right e-icons';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var multiselectObj = new Multiselect();\n * multiselectObj.appendTo(\"#list\");\n * </script>\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.storedSelectAllHeight = 0;\n _this.isUpdateHeaderHeight = false;\n _this.isUpdateFooterHeight = false;\n _this.isBlurDispatching = false;\n _this.isFilterPrevented = false;\n _this.isFilteringAction = false;\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.preventSetCurrentData = false;\n _this.isSelectAllLoop = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem(true);\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n if (_this.isReact) {\n setTimeout(function () {\n if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto') {\n var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n _this.isUpdateHeaderHeight = true;\n }\n if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n _this.isUpdateFooterHeight = true;\n }\n }\n }, 15);\n }\n attributes(_this.inputElement, {\n 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id\n });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n this.isVirtualReorder = true;\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.isVirtualReorder = false;\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding\n ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1])\n : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle, undefined, false, null, true);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem, undefined, false, null, true);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function (isOpen) {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED + ')');\n if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n element = elements && elements.length > 0 ? elements[2] : element;\n }\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n element = elements && elements.length > 0 ? elements[2] : element;\n }\n }\n }\n else {\n if (this.fields.disabled) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding\n ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1])\n : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() &&\n this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, {\n 'id': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-hidden': 'false',\n 'aria-label': 'list'\n });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(value)) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = this.isPrimitiveData ? '' : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n var startindex = this.viewPortInfo.startIndex;\n var endindex = (((startindex + this.viewPortInfo.endIndex) <= (valuecheck.length)) &&\n valuecheck[(startindex + this.viewPortInfo.endIndex)]) ? (startindex + this.viewPortInfo.endIndex)\n : (valuecheck.length);\n for (var i = startindex; i < endindex; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === startindex) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (this.isaddNonPresentItems) {\n predicate = i === 0 ? new Predicate(field, 'equal', valuecheck[i])\n : predicate.or(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = i === 0 ? predicate = new Predicate(field, 'notequal', (value))\n : predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.value && list && list.length > 0 && this.allowFiltering && this.mode !== 'CheckBox' && !this.enableVirtualization && !this.isFilterPrevented && !this.allowCustomValue && this.isFilteringAction) {\n var allItemsInValue = list.every(function (item) {\n var itemValue = getValue((_this.fields.value) ? _this.fields.value : '', item);\n return _this.value.some(function (val) {\n var value = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', val) : val;\n return itemValue === value;\n });\n });\n if (allItemsInValue) {\n ulElement.innerHTML = '';\n list = [];\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < (this.itemCount * 2) &&\n ((!(this.dataSource instanceof DataManager)) ||\n ((this.dataSource instanceof DataManager) && (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization &&\n this.listData && this.listData.length > 0) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.isaddNonPresentItems = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n this.isaddNonPresentItems = false;\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered &&\n this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fields.disabled)) {\n this.disableGroupHeader();\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) &&\n this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n else if (!this.isRemoveSelection) {\n this.initialValueUpdate(this.listData, true);\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) :\n this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.e-list-group-item.e-active:not(.e-disabled)').length : this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-disabled)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' &&\n this.showSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n return this.virtualFilterQuery(filterQuery);\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization &&\n this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.take(this.maximumSelectionLength).requiresCount() :\n new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n if (this.virtualSelectAll) {\n return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?\n this.query.take(this.maximumSelectionLength).requiresCount() :\n new Query().take(this.maximumSelectionLength).requiresCount();\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e &&\n filterQuery.queries[queryElements].e.condition === 'or') || (filterQuery.queries[queryElements].e &&\n filterQuery.queries[queryElements].e.operator === 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ?\n filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ?\n this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ?\n queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) && !this.isVirtualReorder) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n this.customFilterQuery = null;\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ?\n this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand || (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0)) {\n this.remoteCustomValue = false;\n var isReordered = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length === 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\n if (this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n if (this.value && this.value.length > 0 && this.mode === 'CheckBox') {\n this.notify('setCurrentViewDataAsync', {\n component: this.getModuleName(),\n module: 'VirtualScroll'\n });\n isReordered = true;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length :\n this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var contentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n contentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n if (!isReordered) {\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n if (this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n this.list.querySelector('.e-list-parent' + '.e-reorder').remove();\n }\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) &&\n !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n var contentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n contentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.allowResize) {\n this.setResize();\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ?\n Object.keys(this.firstItem) : Object.keys(dataItem_1);\n var isNumberType_1 = (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ?\n ((key === fields.text) && isNumberType_1) ? getValue(fields.text, dataItem_1) :\n getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ?\n JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ?\n tempCount : this.totalItemCount;\n }\n else {\n if (this.dataSource instanceof DataManager && this.allowCustomValue && this.allowFiltering) {\n this.remoteCustomValue = false;\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n this.checkAndScrollParent();\n };\n MultiSelect.prototype.checkAndScrollParent = function () {\n var parentElement = this.overAllWrapper ? this.overAllWrapper.parentElement : null;\n if (parentElement) {\n var wrapperHeight = parseFloat(getComputedStyle(this.overAllWrapper).height);\n var parentMaxHeight = parseFloat(getComputedStyle(parentElement).maxHeight);\n if (!isNaN(parentMaxHeight) && wrapperHeight > parentMaxHeight) {\n parentElement.scrollTop = parentElement.scrollHeight;\n }\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (this.isBlurDispatching && this.isAngular) {\n this.isBlurDispatching = false;\n return;\n }\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.isBlurDispatching = true;\n if (this.isAngular) {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight, 10));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight, 10);\n elementWidth = this.overAllWrapper.clientWidth -\n (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight, 10)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n if (this.enableVirtualization && this.enableSelectionOrder && this.mode === 'CheckBox') {\n this.preventSetCurrentData = false;\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li +\n ':not(.' + HIDE_LIST + ')' +\n ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||\n previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n previousItem = previousItem.previousElementSibling;\n }\n if (!previousItem) {\n return;\n }\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0)\n ? this.liCollections[steps]\n : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex === 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||\n previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n previousItem = previousItem.nextElementSibling;\n }\n if (!previousItem) {\n return;\n }\n }\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n var codePoint = this.placeholder.charCodeAt(0);\n var sizeMultiplier = (0xAC00 <= codePoint && codePoint <= 0xD7AF) ? 1.5\n : (0x4E00 <= codePoint && codePoint <= 0x9FFF) ? 2 : 1;\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length * sizeMultiplier;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updatePopupPosition = function () {\n this.refreshPopup();\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (filterInput) {\n filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n else if (this.mode === 'CheckBox') {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) ||\n (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n this.isKeyBoardAction = false;\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n this.isKeyBoardAction = false;\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n this.isKeyBoardAction = false;\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') :\n false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) :\n this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n if (this.allowFiltering || this.allowCustomValue) {\n this.refreshListItems(null);\n }\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode, isInitial) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if (isInitial === void 0) { isInitial = false; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||\n (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ?\n this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin))\n : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode === 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue &&\n currentElementValue === lastElementValue && keyCode !== 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += (selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.isScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode === 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode === 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?\n isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +\n (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?\n parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?\n selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin)) :\n selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight +\n selectedListMargin)) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ?\n this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * (selectedLI.offsetHeight + selectedListMargin)) +\n (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode === 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue &&\n currentElementValue === firstElementValue && keyCode !== 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= (selectedLI.offsetHeight + selectedListMargin) * liCount;\n this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode === 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode === 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.isScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n var isFilterData = this.targetElement().trim() !== '' ? true : false;\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent, isFilterData);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data, isFilterData) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData &&\n this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n if (this.allowFiltering && isFilterData) {\n this.updateInitialData();\n this.onActionComplete(list, this.mainData);\n this.isVirtualTrackHeight = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :\n selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' ||\n filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') &&\n selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\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) &&\n !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length === 0 &&\n this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position === -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n var focusedLi = this.list ? this.list.querySelector('.e-item-focus') : null;\n if (this.isDisabledElement(focusedLi)) {\n if (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem):not(.e-disabled)').length === 0 || (this.keyCode === 38 && this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && focusedLi === this.list.querySelector('li.e-list-group-item'))) {\n this.removeFocus();\n return;\n }\n var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));\n if (index === 0) {\n position = 1;\n }\n if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {\n position = -1;\n }\n this.moveByList(position);\n }\n };\n MultiSelect.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) &&\n this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ?\n this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) :\n this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ?\n this.fields.value : ''), value) : value;\n var element_1 = this.virtualSelectAll ? null : this.findListElement(this.list, 'li', 'data-value', currentValue);\n var val_1 = this.allowObjectBinding ? value : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n _this.isRemoveSelection = _this.enableVirtualization ? true : _this.isRemoveSelection;\n _this.currentRemoveValue = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index === 0 && _this.text.split(_this.delimiterChar) &&\n _this.text.split(_this.delimiterChar).length === 1 ?\n _this.text.replace(_this.text.split(_this.delimiterChar)[index], '') :\n index === 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] +\n _this.delimiterChar, '') :\n _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ?\n _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (!(this.enableVirtualization && isClearAll)) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n // eslint-disable-next-line no-prototype-builtins\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) &&\n item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(this.getDataByValue(value), this.value)) || (!this.allowObjectBinding &&\n this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization && !this.isSelectAllLoop) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var currentText = [];\n var value_1 = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) :\n this.value[this.value.length - 1];\n var temp = text;\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var activeItems = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.e-active');\n removeClass(activeItems, 'e-disable');\n var inactiveItems = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(inactiveItems, 'e-disable');\n }\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li);\n removeClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length, dataValue, text) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = dataValue ? dataValue : this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (dataValue) {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push(dataValue);\n }\n else {\n _this.selectedListData = [_this.selectedListData, dataValue];\n }\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve, text);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.allowFiltering) {\n this.refreshPopup();\n return;\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight +\n parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10);\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n var contentElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n contentElement.style.cssText = this.getTransformValues();\n this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemsCount();\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] &&\n _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight +\n parseInt(window.getComputedStyle(_this.getItems()[1]).marginBottom, 10);\n if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n }\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify('bindScrollEvent', {\n module: 'VirtualScroll',\n component: _this.getModuleName(),\n enable: _this.enableVirtualization\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (this.allowResize) {\n this.setResize();\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen)) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = this.itemCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < this.itemCount * 2 &&\n ((!(this.dataSource instanceof DataManager)) || ((this.dataSource instanceof DataManager) &&\n (this.totalItemCount <= this.itemCount))) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (this.enableVirtualization) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n this.setDynValue = false;\n this.isClearAllAction = true;\n if (this.value && this.value.length > 0) {\n if (this.allowFiltering) {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox' && this.targetInputElement) {\n this.targetInputElement.value = '';\n }\n }\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = this.itemCount;\n }\n this.isClearAllAction = false;\n }\n this.isClearAllItem = true;\n EventHandler.add(document, 'mouseup', this.preventSelection, this);\n };\n MultiSelect.prototype.preventSelection = function (e) {\n if (this.isClearAllItem) {\n e.stopPropagation();\n }\n this.isClearAllItem = false;\n EventHandler.remove(document, 'mouseup', this.preventSelection);\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.allowResize) {\n this.setResize();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n if (!isNullOrUndefined(this.inputElement)) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n this.isRequesting = false;\n 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.isCustomFiltering = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n _this.isFilterPrevented = eventArgs.cancel;\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.isFilteringAction = true;\n if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {\n _this.isCustomRendered = false;\n }\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n _this.isFilteringAction = false;\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) ||\n this.incrementalEndIndex === 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount :\n this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if (!(this.viewPortInfo.startIndex >= activeElement.index) ||\n !(activeElement.index >= this.viewPortInfo.endIndex)) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0\n ? activeElement.index - ((this.itemCount / 2) - 2)\n : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount\n ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2)\n : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount\n ? this.totalItemCount\n : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.isaddNonPresentItems = false;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e, isInitialVirtualData) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement) && !this.enableVirtualization) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n var _loop_2 = function (index) {\n var valueItem = this_1.allowObjectBinding ?\n getValue((this_1.fields.value) ? this_1.fields.value : '', this_1.value[index]) : this_1.value[index];\n var listValue = this_1.findListElement((!isNullOrUndefined(this_1.mainList) ? this_1.mainList : this_1.ulElement), 'li', 'data-value', valueItem);\n if (this_1.enableVirtualization) {\n listValue = this_1.findListElement((!isNullOrUndefined(this_1.list) ? this_1.list : this_1.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this_1.allowCustomValue && !this_1.enableVirtualization &&\n this_1.listData && this_1.listData.length > 0) {\n this_1.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this_1.listData) {\n if (this_1.enableVirtualization) {\n if (delim && !this_1.isDynamicRemoteVirtualData) {\n data = this_1.delimiterWrapper && this_1.delimiterWrapper.innerHTML === '' ? data :\n this_1.delimiterWrapper.innerHTML;\n }\n var value = this_1.allowObjectBinding ?\n getValue(((this_1.fields.value) ? this_1.fields.value : ''), this_1.value[this_1.value.length - 1]) :\n this_1.value[this_1.value.length - 1];\n if (this_1.isRemoveSelection) {\n data = this_1.text.replace(/,/g, delimiterChar + ' ') + delimiterChar + ' ';\n text = this_1.text.split(delimiterChar);\n }\n else {\n temp = isInitialVirtualData && delim ? this_1.text : this_1.getTextByValue(value);\n var textValues = this_1.isDynamicRemoteVirtualData && value != null && value !== '' && !isInitialVirtualData ?\n this_1.getTextByValue(value) : isInitialVirtualData ? this_1.text : (this_1.text && this_1.text !== '' ? this_1.text + this_1.delimiterChar + temp : temp);\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n hiddenElementContent = this_1.hiddenElement.innerHTML;\n }\n if ((e && e.currentTarget && e.currentTarget.classList.contains('e-chips-close')) ||\n (e && (e.key === 'Backspace'))) {\n var item_1 = e.target.parentElement.getAttribute('data-value');\n if (e.key === 'Backspace') {\n var lastChild = this_1.hiddenElement.lastChild;\n if (lastChild) {\n this_1.hiddenElement.removeChild(lastChild);\n }\n }\n else {\n this_1.hiddenElement.childNodes.forEach(function (option) {\n if (option.value === item_1) {\n option.parentNode.removeChild(option);\n }\n });\n }\n hiddenElementContent = this_1.hiddenElement.innerHTML;\n }\n else {\n hiddenElementContent += '<option selected value=\\'' + value + '\\'>' + index + '</option>';\n }\n return out_index_1 = index, \"break\";\n }\n else {\n temp = this_1.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n out_index_1 = index;\n };\n var this_1 = this, out_index_1;\n for (var index = 0; index < valueLength; index++) {\n var state_2 = _loop_2(index);\n index = out_index_1;\n if (state_2 === \"break\")\n break;\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n if (this.isRemoveSelection) {\n if (this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue)) {\n this.hiddenElement.removeChild(this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue));\n }\n this.isRemoveSelection = false;\n }\n else {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) :\n this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if ((this.isPrimitiveData && listItems[i] === value) || (!this.isPrimitiveData\n && getValue((this.fields.value ? this.fields.value :\n 'value'), listItems[i]) === value)) {\n text = this.isPrimitiveData ? listItems[i] :\n getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) &&\n ((!(this.dataSource instanceof DataManager)) ||\n (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) ||\n (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.isDynamicRemoteVirtualData && text != null && text !== '' && index === 0 ? text : this.text != null && this.text !== '' && !this.text.includes(text) ? this.text + this.delimiterChar + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) ||\n (this.enableVirtualization &&\n value &&\n this.allowCustomValue &&\n ((!(this.dataSource instanceof DataManager)) ||\n (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ?\n this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, null, isInitialVirtualData);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) ||\n (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 &&\n this.ulElement.children[0].childElementCount > 0) &&\n (this.mainList.children[0] && (this.mainList.children[0].childElementCount <\n this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 &&\n !(this.ulElement.childElementCount < this.mainList.childElementCount) &&\n (this.ulElement.children[0].childElementCount > 0 ||\n (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.allowObjectBinding ?\n this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n this.checkAndScrollParent();\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e, currentText) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = currentText ? currentText : this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) &&\n !this.findListElement(this.mainList, 'li', 'data-value', value) &&\n (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && (this.isValidLI(element) || (this.fields.disabled && this.isDisabledElement(element)))) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e, isInitialVirtualData) {\n this.updateData(delimChar, e, isInitialVirtualData);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n if (!this.isClearAllItem) {\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.allowResize) {\n this.setResize();\n }\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n var isFilterData = this.targetElement().trim() !== '' ? true : false;\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent, isFilterData);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ?\n Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.'\n + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length :\n this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virualElement.style.cssText = this.GetVirtualTrackHeight();\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (!(this.fields.disabled && this.isDisabledElement(listElement))) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n }\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null || (!isNullOrUndefined(this.fields.disabled) && count === 0)) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.disableGroupHeader = function () {\n var collection = this.list.querySelectorAll('li.e-list-group-item');\n if (collection) {\n for (var index = 0; index < collection.length; index++) {\n var isDisabled = true;\n var target = collection[index].nextElementSibling;\n while (!target.classList.contains('e-list-group-item')) {\n if (!this.isDisabledElement(target)) {\n isDisabled = false;\n break;\n }\n target = target.nextElementSibling;\n if (target == null) {\n break;\n }\n }\n if (isDisabled) {\n this.disableListItem(collection[index]);\n }\n }\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value) && (this.allowCustomValue || (this.listData && this.listData.length > 0))) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10) +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingLeft, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10) +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingLeft, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10) +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingLeft, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = parseInt(window.getComputedStyle(this.overAllClear).width, 10);\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingRight, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ?\n getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) :\n this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.resizingWireEvent = function () {\n // Mouse events\n EventHandler.add(document, 'mousemove', this.resizePopup, this);\n EventHandler.add(document, 'mouseup', this.stopResizing, this);\n // Touch events\n EventHandler.add(document, 'touchmove', this.resizePopup, this);\n EventHandler.add(document, 'touchend', this.stopResizing, this);\n };\n MultiSelect.prototype.resizingUnWireEvent = function () {\n // Mouse events\n EventHandler.remove(document, 'mousemove', this.resizePopup);\n EventHandler.remove(document, 'mouseup', this.stopResizing);\n // Touch events\n EventHandler.remove(document, 'touchmove', this.resizePopup);\n EventHandler.remove(document, 'touchend', this.stopResizing);\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ?\n closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (!(this.fields.disabled && this.isDisabledElement(listElement))) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.virtualSelectionAll = function (state, li, event) {\n var _this = this;\n var index = 0;\n var length = li.length;\n var count = this.maximumSelectionLength;\n if (state) {\n this.virtualSelectAll = true;\n length = this.virtualSelectAllData && this.virtualSelectAllData.length !== 0 ? this.virtualSelectAllData.length : length;\n this.listData = this.virtualSelectAllData;\n var ulElement = this.createListItems(this.virtualSelectAllData.slice(0, 30), this.fields);\n var firstItems = ulElement.querySelectorAll('li');\n var fragment_1 = document.createDocumentFragment();\n firstItems.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n li.forEach(function (node) {\n fragment_1.appendChild(node.cloneNode(true));\n });\n var concatenatedNodeList = fragment_1.childNodes;\n if (this.virtualSelectAllData instanceof Array) {\n while (index < length && index <= 50 && index < count) {\n this.isSelectAllTarget = (length === index + 1);\n if (concatenatedNodeList[index]) {\n var value = this.allowObjectBinding\n ? this.getDataByValue(concatenatedNodeList[index].getAttribute('data-value'))\n : this.getFormattedValue(concatenatedNodeList[index].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n this.updateListSelection(concatenatedNodeList[index], event, length - index);\n }\n else {\n var value = getValue(this.fields.value ? this.fields.value : '', this.virtualSelectAllData[index]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0) ||\n (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0))) {\n index++;\n continue;\n }\n if (this.value && value != null && Array.isArray(this.value) &&\n ((!this.allowObjectBinding && this.value.indexOf(value) < 0) ||\n (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.dispatchSelect(value, event, null, false, length);\n }\n }\n index++;\n }\n if (length > 50) {\n setTimeout(function () {\n if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {\n _this.virtualSelectAllData.map(function (obj) {\n if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) &&\n ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) ||\n (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {\n var value = obj[_this.fields.value];\n var text = (obj[_this.fields.text]).toString();\n _this.dispatchSelect(value, event, null, false, length, obj, text);\n }\n });\n }\n _this.updatedataValueItems(event);\n _this.isSelectAllLoop = false;\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement(true);\n if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index - 1].classList.remove('e-item-focus');\n }\n }\n _this.checkSelectAll();\n }, 0);\n }\n }\n }\n else {\n if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {\n this.virtualSelectAllData.map(function (obj) {\n _this.virtualSelectAll = true;\n _this.removeValue(_this.value[index], event, _this.value.length - index);\n });\n }\n this.updatedataValueItems(event);\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n this.setProperties({ value: [] }, true);\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify('setCurrentViewDataAsync', {\n component: this.getModuleName(),\n module: 'VirtualScroll'\n });\n }\n }\n this.checkSelectAll();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n virtualTrackElement.style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n virtualContentElement.style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if ((li && li.length) || (this.enableVirtualization && !state)) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n if (this.enableVirtualization) {\n this.virtualSelectAllState = state;\n this.virtualSelectAll = true;\n this.CurrentEvent = event;\n if (!this.virtualSelectAllData) {\n this.resetList(this.dataSource, this.fields, new Query());\n }\n if (this.virtualSelectAllData) {\n this.virtualSelectionAll(state, li, event);\n }\n }\n else {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.isSelectAllTarget = (length === index_1 + 1);\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.isSelectAllTarget = (length === index_1 + 1);\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_1 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value) < 0) ||\n (this.allowObjectBinding && !this.isObjectInArray(value, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n if ((this.enableVirtualization && this.value && this.value.length > 0) || !this.enableVirtualization) {\n this.updateHiddenElement();\n }\n }\n };\n MultiSelect.prototype.updateHiddenElement = function (isVirtualSelectAll) {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '<option selected value =\"' + value + '\">' + index + '</option>';\n if (!isVirtualSelectAll) {\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n }\n });\n this.hiddenElement.innerHTML = hiddenValue;\n if (!isVirtualSelectAll) {\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.setProperties({ text: text.toString() }, true);\n }\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if ((!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) || (this.isSelectAll && this.isSelectAllTarget)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n if (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualSelectAllData)) {\n this.virtualSelectAll = false;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n if (this.fields.disabled) {\n this.text =\n this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (this.isPopupOpen() && this.mode === 'CheckBox' && this.list && this.list.querySelector('.e-active.e-disable')) {\n var activeItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + '.e-active' + '.e-disable');\n removeClass(activeItems, 'e-disable');\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'allowResize':\n this.allowResize = newProp.allowResize;\n if (!this.allowResize && this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.height = formatUnit(this.popupHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) &&\n !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount !== 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ?\n this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ?\n this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\n };\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop === 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.isaddNonPresentItems = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n this.isaddNonPresentItems = false;\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization) {\n this.initialValueUpdate();\n }\n else if (this.enableVirtualization && (!(this.dataSource instanceof DataManager))) {\n this.initialValueUpdate(this.dataSource, true);\n }\n else if (!this.isInitRemoteVirtualData) {\n this.isDynamicRemoteVirtualData = true;\n this.initialValueUpdate(this.listData, true);\n this.isDynamicRemoteVirtualData = false;\n this.initialUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode === 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.list && _this.list.parentElement && _this.allowResize) {\n if (_this.resizer && _this.list.parentElement.contains(_this.resizer)) {\n _this.list.parentElement.removeChild(_this.resizer);\n }\n if (_this.list.parentElement.classList.contains('e-resize')) {\n _this.list.parentElement.classList.remove('e-resize');\n }\n _this.list.parentElement.style.boxSizing = '';\n _this.list.parentElement.style.paddingBottom = '';\n var overAllHeight = parseInt(_this.popupHeight, 10);\n _this.list.style.maxHeight = formatUnit(overAllHeight);\n _this.list.parentElement.style.height = formatUnit(_this.popupHeight);\n _this.list.parentElement.style.maxHeight = formatUnit(_this.popupHeight);\n }\n if (_this.resizer) {\n EventHandler.remove(_this.resizer, 'mousedown', _this.startResizing);\n _this.resizer.remove();\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 &&\n _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ?\n _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = _this.itemCount;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n if (_this.remoteDataCount >= 0) {\n _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n }\n else {\n _this.resetList(_this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) &&\n (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.checkAndResetCache();\n _this.updateInitialData();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 &&\n _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) &&\n !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' ||\n _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) &&\n !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify('setCurrentViewDataAsync', {\n component: _this.getModuleName(),\n module: 'VirtualScroll'\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null &&\n _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify('dataProcessAsync', {\n module: 'VirtualScroll',\n isOpen: true\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ?\n getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n if (_this.allowResize) {\n _this.setResize();\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value) && this.value.length > 0) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', {\n className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ?\n BOX_ELEMENT : '')\n });\n this.viewWrapper = this.createElement('span', {\n className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER\n });\n this.viewWrapper.style.display = 'none';\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n this.overAllClear.style.display = 'none';\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER });\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollectionWrapper.style.display = 'none';\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n if (!this.inputElement.hasAttribute('aria-label')) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) &&\n closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ?\n this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] &&\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.setResize = function () {\n var resizePaddingBottom = 16;\n if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {\n this.resizer = this.createElement('div', {\n id: this.element.id + '_resize-popup',\n className: RESIZE_ICON\n });\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {\n this.storedSelectAllHeight = this.selectAllHeight;\n }\n if (this.list && this.list.parentElement) {\n this.list.parentElement.classList.add('e-resize');\n if (this.popupHeight.toString().toLowerCase() !== 'auto') {\n this.list.parentElement.style.height = '100%';\n }\n this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size\n var paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;\n this.list.parentElement.style.paddingBottom = paddingBottom + \"px\";\n this.list.parentElement.appendChild(this.resizer);\n this.list.parentElement.style.width = this.resizeWidth + 'px';\n this.list.parentElement.style.height = this.resizeHeight + 'px';\n this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n }\n if (this.resizer) {\n EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);\n EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);\n }\n };\n MultiSelect.prototype.startResizing = function (event) {\n this.isResizing = true;\n this.trigger('resizeStart', event);\n // Get initial touch or mouse coordinates\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n if (this.list && this.list.parentElement) {\n this.originalWidth = this.list.parentElement.offsetWidth;\n this.originalHeight = this.list.parentElement.offsetHeight;\n this.originalMouseX = clientX;\n this.originalMouseY = clientY;\n }\n this.resizingWireEvent();\n // Prevent default behavior like text selection\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.resizePopup = function (event) {\n if (!this.isResizing) {\n return;\n }\n this.trigger('resizing', event);\n // Get the current touch or mouse position\n var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;\n var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;\n // Calculate the new width and height based on drag\n var dx = clientX - this.originalMouseX;\n var dy = clientY - this.originalMouseY;\n // Set minimum width and height (100px)\n var minWidth = 100;\n var minHeight = 130;\n // Ensure the new width and height are not smaller than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n if (this.list && this.list.parentElement) {\n // Set minimum width and height (100px)\n var minWidth_1 = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n var minHeight_1 = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n minWidth_1 = minWidth_1 || 100;\n minHeight_1 = minHeight_1 || 120;\n // Ensure the new width and height are not smaller than the minimum\n this.resizeWidth = Math.max(this.originalWidth + dx, minWidth_1);\n this.resizeHeight = Math.max(this.originalHeight + dy, minHeight_1);\n this.list.parentElement.style.width = this.resizeWidth + \"px\";\n this.list.parentElement.style.height = this.resizeHeight + \"px\";\n this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n this.list.style.maxHeight = this.resizeHeight + \"px\";\n if (this.fixedHeaderElement && this.ulElement) {\n this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n }\n }\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.stopResizing = function (event) {\n if (this.isResizing) {\n this.isResizing = false;\n this.trigger('resizeStop', event);\n this.resizingUnWireEvent();\n }\n if (event) {\n event.preventDefault();\n }\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height) +\n parseInt(window.getComputedStyle(item).marginBottom, 10);\n listParent.remove();\n return listItemHeight;\n };\n /**\n * Removes disabled values from the given array.\n *\n * @param { number[] | string[] | boolean[] | object[] } value - The array to check.\n * @returns {void}\n */\n MultiSelect.prototype.removeDisabledItemsValue = function (value) {\n if (value) {\n var data = [];\n var dataIndex = 0;\n for (var index = 0; index < value.length; index++) {\n var indexValue = value[index];\n if (typeof (indexValue) === 'object') {\n indexValue = JSON.parse(JSON.stringify(indexValue))[this.fields.value];\n }\n if ((indexValue != null) && !(this.isDisabledItemByIndex(this.getIndexByValue(indexValue)))) {\n data[dataIndex++] = value[index];\n }\n }\n this.value = data.length > 0 ? data : null;\n }\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n if (this.fields.disabled) {\n this.removeDisabledItemsValue(this.value);\n }\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(value);\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (this.fields.disabled) {\n this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = !this.isPrimitiveData ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ?\n getValue((this.fields.value) ? this.fields.value : '', this.value[i]) :\n this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n _this.isInitRemoteVirtualData = true;\n setTimeout(function () {\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n _this.isInitRemoteVirtualData = false;\n }, 100);\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2, true);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ?\n this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n MultiSelect.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n if (li.classList.contains(dropDownBaseClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(HIDE_LIST) || li.classList.contains(dropDownBaseClasses.selected)) {\n var oldValue = this.value;\n this.removeDisabledItemsValue(this.value);\n this.updateVal(this.value, oldValue, 'value');\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.disableGroupHeader();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.hide();\n this.popupObj.destroy();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n var temp = ['readonly', 'aria-disabled', 'placeholder', 'aria-label', 'aria-expanded'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n if (this.popupWrapper && this.popupWrapper.parentElement) {\n this.popupWrapper.parentElement.remove();\n }\n while (this.searchWrapper && this.searchWrapper.firstChild) {\n this.searchWrapper.removeChild(this.searchWrapper.firstChild);\n }\n if (this.searchWrapper && this.searchWrapper.parentElement) {\n this.searchWrapper.parentElement.remove();\n }\n if (this.viewWrapper && this.viewWrapper.parentElement) {\n this.viewWrapper.parentElement.remove();\n }\n if (this.overAllClear && this.overAllClear.parentElement) {\n this.overAllClear.parentElement.remove();\n }\n if (this.delimiterWrapper && this.delimiterWrapper.parentElement) {\n this.delimiterWrapper.parentElement.remove();\n }\n // Remove the select element if it exists\n var selectElement = this.overAllWrapper.querySelector('select.e-multi-hidden');\n if (selectElement && selectElement.parentElement) {\n selectElement.parentElement.remove();\n }\n while (this.componentWrapper && this.componentWrapper.firstChild) {\n this.componentWrapper.removeChild(this.componentWrapper.firstChild);\n }\n if (this.componentWrapper && this.componentWrapper.parentElement) {\n this.componentWrapper.removeAttribute('class');\n this.componentWrapper.parentElement.remove();\n }\n while (this.popupWrapper && this.popupWrapper.firstChild) {\n this.popupWrapper.removeChild(this.popupWrapper.firstChild);\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-label', 'aria-hidden', 'tabindex', 'aria-controls',\n 'aria-describedby', 'size', 'role', 'type', 'class'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n }\n if (this.inputElement) {\n this.inputElement.remove();\n }\n this.list = null;\n this.popupObj = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.liCollections = null;\n this.popupContentElement = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"isDeviceFullScreen\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowResize\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) ||\n (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice && this.parent.isDeviceFullScreen) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n if (!this.parent.enableVirtualization || (this.parent.enableVirtualization && (isNullOrUndefined(this.parent.value)\n || (this.parent.value && this.parent.value.length === 0)))) {\n this.setReorder(e);\n }\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n var footerHeight = 0;\n var headerHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n if (this.parent.header) {\n headerHeight = this.parent.header.getBoundingClientRect().height;\n }\n if (this.parent.footer) {\n footerHeight = this.parent.footer.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight - headerHeight - footerHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight - headerHeight - footerHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n if (!isNullOrUndefined(this.selectAllSpan)) {\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n, setValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <select id=\"listbox\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isBackSpace = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n if (this.isAngular && this.allowFiltering) {\n var originalElement = this.element;\n var clonedElement = originalElement.cloneNode(true);\n originalElement.parentNode.replaceChild(clonedElement, originalElement);\n this.element = clonedElement;\n setValue('ej2_instances', [this], this.element);\n }\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n this.inputFormName = this.element.getAttribute('name');\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad && this.element.parentElement) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n beforeDragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index === null ? this.jsonData.length : index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n this.toolbarSettings.items = isNullOrUndefined(this.toolbarSettings.items) ? [] : this.toolbarSettings.items;\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n if (this.inputFormName) {\n input.setAttribute('name', this.inputFormName);\n }\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n if (this.element.parentElement) {\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n }\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var _this = this;\n var searchEle;\n var filterElem;\n var txtLength;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (isNullOrUndefined(filterElem)) {\n return;\n }\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n if (filterElem.value !== '' || (filterElem.value === '' && this.isBackSpace)) {\n filterElem.focus();\n setTimeout(function () { _this.isBackSpace = false; });\n }\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n var extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', extendedArgs, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n if (dragEventArgs.cancel) {\n args.cancel = true;\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n if (scrollParent) {\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (JSON.stringify(args.items) !== JSON.stringify(items)) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n if (listObj.sortOrder === 'None') {\n listObj.sortedData = extend([], [], sortedData, false);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n if (this.toolbarSettings.items.length > 0) {\n this.updateToolBarState();\n }\n else if (this.tBListBox && this.tBListBox.toolbarSettings.items.length > 0) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n destElem.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destElem.append.apply(destElem, sourceElem.childNodes);\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n if (this.allowFiltering && this.filterInput && this.filterInput.value !== '' && this.toolbarSettings.items.length > 0) {\n var canDisable_1 = false;\n this.ulElement.childNodes.forEach(function (li) { if (!li.classList.contains('e-disabled')) {\n canDisable_1 = true;\n } });\n if (!canDisable_1) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"moveAllTo\"]');\n btn.disabled = true;\n }\n }\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var _this = this;\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = {};\n var dupData = [];\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var i = 0; i < dupData.length; i++) {\n var value = (dupData[i] instanceof Object) ? dupData[i][fields.value] :\n dupData[i].toString();\n objValue[value] = i;\n }\n for (var j = 0; j < items.length; j++) {\n dataValue = (items[j] instanceof Object) ? items[j][fields.value] :\n items[j].toString();\n if (Object.prototype.hasOwnProperty.call(objValue, dataValue)) {\n var idx = objValue[dataValue];\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n var validRemoveIdxes = removeIdxes.sort(function (a, b) { return b - a; });\n validRemoveIdxes.forEach(function (idx) {\n _this.listData.splice(idx, 1);\n _this.jsonData.splice(idx, 1);\n });\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n this.toolbarAction = 'moveAllTo';\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n window.addEventListener('resize', this.resizeHandler.bind(this));\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n window.removeEventListener('resize', this.resizeHandler.bind(this));\n };\n ListBox.prototype.clickHandler = function (e) {\n var li = closest(e.target, '.' + 'e-list-item');\n if (isNullOrUndefined(li)) {\n return;\n }\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'role': 'textbox'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else if (this.height.toString().indexOf('%') > 0) {\n this.ulElement.style.height = (this.ulElement.offsetHeight - this.filterParent.offsetHeight) + 'px';\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n this.ulElement.style.setProperty('height', 'calc(100% - ' + (this.filterParent.offsetHeight) + 'px)', 'important');\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n var len = elems.length;\n for (var i = 0; i < len; i++) {\n var elem = elems[i];\n var value = elem.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = this.getFormattedValue(value);\n data.push(this.getDataByValue(formattedValue));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ulChildren_1 = Array.prototype.slice.call(fListBox.ulElement.children);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_1 = Array.prototype.slice.call(fListBox.ulElement.querySelectorAll('.e-list-item'));\n var lData_1 = fListBox.listData;\n var sData_1 = fListBox.sortedData;\n var jData_1 = fListBox.jsonData;\n var eData_1;\n var listDataMap_1 = {};\n if (elems.length > 199) {\n for (var _i = 0, _a = fListBox.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item)) {\n var key = fListBox.getFormattedValue(getValue((fListBox.fields.value ? fListBox.fields.value : 'value'), item));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listDataMap_1[key] = item;\n }\n }\n }\n elems.forEach(function (ele) {\n if (elems.length < 200) {\n eData_1 = fListBox.getDataByElems([ele])[0];\n }\n else {\n var value_1 = ele.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = fListBox.getFormattedValue(value_1);\n eData_1 = listDataMap_1[formattedValue];\n }\n idx.push(ulChildren_1.indexOf(ele));\n dataLiIdx.push(listItems_1.indexOf(ele));\n dataIdx.push(lData_1.indexOf(eData_1));\n sortIdx.push(sData_1.indexOf(eData_1));\n jsonIdx.push(jData_1.indexOf(eData_1));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n if (fListBox.liCollections.length === fListBox.ulElement.querySelectorAll('.e-disabled').length && this.toolbarAction) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var toolbarAction = this.toolbarAction === 'moveFrom' ? 'moveAllFrom' : 'moveAllTo';\n if (wrap) {\n var btn = wrap.querySelector('[data-value=\"' + toolbarAction + '\"]');\n btn.disabled = true;\n }\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNodes = fListBox.ulElement.childNodes;\n var childElementCount = fListBox.ulElement.childElementCount;\n var newFlistboxArray = [];\n for (var i = 0; i < childElementCount; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNode = childNodes[i];\n if (childNode.classList.contains('e-disabled')) {\n tempLiColl.push(childNode);\n if (this.sortOrder != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.sortedData[i]);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n }\n else {\n newFlistboxArray.push(i);\n }\n }\n flistboxarray = newFlistboxArray;\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < flistboxarray.length; i++) {\n if (this.sortOrder != null) {\n listData.splice(index + i, 0, fListBox.sortedData[flistboxarray[i]]);\n }\n else {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n }\n else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.liCollections);\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData.filter(function (data) { return (data !== undefined); });\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = tempData;\n }\n else if (fListBox.allowFiltering) {\n var disabledData_1 = [];\n if (tempLiColl.length > 0) {\n for (var i = 0; i < tempLiColl.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n disabledData_1.push(fListBox.getDataByValue(tempLiColl[i].getAttribute('data-value')));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fListBox.listData = fListBox.listData.filter(function (obj1) {\n return !disabledData_1.some(function (obj2) { return obj1 === obj2; });\n });\n }\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n if (tempLiColl.length > 0) {\n fListBox.listData = disabledData_1;\n fListBox.sortedData = [];\n }\n else {\n fListBox.listData = fListBox.sortedData = [];\n }\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0 && tempLiColl.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, event: args.event, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && (!this.allowFiltering ||\n (this.allowFiltering && e.target !== this.filterInput))) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey && this.selectionSettings.mode === 'Multiple') {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n var isWordAccentCharacter = char.match(/[A-Za-z0-9\\u00C0-\\u024F ]/);\n if (!isNullOrUndefined(isWordCharacter) || !isNullOrUndefined(isWordAccentCharacter)) {\n this.isValidKey = true;\n }\n this.isBackSpace = e.keyCode === 8;\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.preventDefActionFilter = eventArgsData_1.preventDefaultAction;\n _this.dataUpdater(dataSource, query, fields);\n _this.preventDefActionFilter = false;\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n _this.preventDefActionFilter = false;\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return isNullOrUndefined(this.targetInputElement) ? null : this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement() && this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.resizeHandler = function () {\n if (this.list && !(this.cssClass && this.cssClass.indexOf('e-horizontal-listbox') > -1)) {\n if (this.list.getElementsByClassName('e-filter-parent').length > 0 && this.allowFiltering) {\n this.ulElement.style.setProperty('height', 'calc(100% - ' + (this.filterParent.offsetHeight) + 'px)', 'important');\n }\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (\n // eslint-disable-next-line max-len\n values, isSelect, isText, canFocus) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n if (canFocus === void 0) { canFocus = true; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n if (text.indexOf('\\n') !== -1) {\n var txt = CSS.escape(text);\n li = _this.list.querySelector('[data-value=\"' + txt + '\"]');\n }\n else {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect && !li.classList.contains('e-disabled')) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n if (isNullOrUndefined(ele)) {\n return;\n }\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '<option selected>' + this.value[i] + '</option>';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n if (isNullOrUndefined(inst.ulElement)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.dataSource) && isNullOrUndefined(this.dataSource.length)) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n if (inst.ulElement.querySelectorAll('.e-disabled').length > 0) {\n return inst.liCollections.length === inst.ulElement.querySelectorAll('.e-disabled').length;\n }\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n }\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n if (this.ulElement.classList.contains('e-sortable')) {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n oldProp.toolbarSettings.items = isNullOrUndefined(oldProp.toolbarSettings.items) ? [] : oldProp.toolbarSettings.items;\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('None')\n ], ListBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n 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 Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'requireLeadingSpace':\n this.requireLeadingSpace = newProp.requireLeadingSpace;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n if (!this.inputElement.hasAttribute('contenteditable')) {\n this.inputElement.setAttribute('contenteditable', 'true');\n }\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space' && this.mentionChar.charCodeAt(0) === this.getLastLetter(this.getTextRange()).charCodeAt(0)) {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.isSelected = true;\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownBaseClasses.focus)\n || this.liCollections[index].classList.contains(dropDownBaseClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n this.updateUpDownAction(e);\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement !== this.inputElement && !isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var mentionRegex = new RegExp(this.mentionChar.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') + '\\\\s');\n var isValid = currentRange && mentionRegex.test(currentRange) ? false : true;\n var lastWordRange = this.getLastLetter(currentRange);\n var previousChar = currentRange ? currentRange.charAt(Math.max(0, currentRange.indexOf(this.mentionChar) - 1)) : '';\n if (isValid && this.allowSpaces && currentRange && currentRange.includes(this.mentionChar) && currentRange.split(this.mentionChar).pop() !== ''\n && (!this.requireLeadingSpace || (this.requireLeadingSpace && (previousChar === ' ' || currentRange.indexOf(this.mentionChar) === 0)))) {\n lastWordRange = this.mentionChar + currentRange.split(this.mentionChar).pop();\n }\n if (!this.requireLeadingSpace && lastWordRange && lastWordRange.includes(this.mentionChar)) {\n lastWordRange = this.mentionChar + lastWordRange.split(this.mentionChar).pop();\n }\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange === lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if (((!currentRange || !lastWordRange) || (!lastWordRange.includes(this.mentionChar) && !this.requireLeadingSpace)) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (isValid && this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0) && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (!this.requireLeadingSpace || this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {\n this.range.deleteContents();\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = !this.requireLeadingSpace\n ? lastWordRange.substring(lastWordRange.lastIndexOf(this.mentionChar) + 1).trim()\n : lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range &&\n this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if ((!this.requireLeadingSpace ? lastWordRange.includes(this.mentionChar)\n : lastWordRange.indexOf(this.mentionChar) === 0) && !this.isPopupOpen && e.keyCode !== 8 &&\n (!this.popupObj || ((isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element)) ||\n (!isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element))))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) ||\n (this.liCollections && this.liCollections.length > 0))) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.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 var isRTESlashMenuPopup = this.isRTE && this.cssClass && this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n ulElement.id = this.inputElement.id + '_slash_menu_options';\n }\n }\n var focusItem = this.fields.disabled ? ulElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled)') : ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.indexOf('\\u200B') > -1 ? text.replace(/\\u200B/g, '').replace(/\\u00A0/g, ' ') : text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement !== this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n var isRTESlashMenuPopup = _this.isRTE && _this.cssClass && _this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n popupEle_1.id = _this.inputElement.id + '_slash_menu_popup';\n }\n else {\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement) {\n var rteRootElement = _this.inputElement.parentElement.closest('.e-richtexteditor');\n if (rteRootElement && popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', rteRootElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString(), 10));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] :\n range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement('span');\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop -\n (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === 'down' || e.action === 'up')) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.selectedLI.offsetTop - (this.list.scrollTop + this.fixedHeaderElement.offsetHeight) :\n this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() &&\n this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n range.startContainer.parentElement.normalize();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n if (this.isRTE) {\n if (lastNode.nodeType === 3) {\n range.setStart(lastNode, lastNode.textContent.length);\n }\n else {\n range.setStartAfter(lastNode);\n }\n }\n else {\n range.setStartAfter(lastNode);\n }\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', { detail: { click: true } });\n this.inputElement.dispatchEvent(event_1);\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '<span contenteditable=\"true\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '&#8203;');\n }\n else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '&#8203;');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n var compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n var compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n this.queryString = text;\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else if (!this.isPopupOpen) {\n this.renderPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n * @deprecated\n */\n Mention.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"requireLeadingSpace\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import * as index from './index';\nindex.DropDownList.Inject(index.VirtualScroll);\nindex.ComboBox.Inject(index.VirtualScroll);\nindex.AutoComplete.Inject(index.VirtualScroll);\nindex.MultiSelect.Inject(index.CheckBoxSelection, index.VirtualScroll);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryStringUpdated","currentValue","isVirtual","refresh","queryString","prevString","tempQueryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","listItems","strLength","length","item","i","matches","innerText","substr","push","indexUpdated","i_1","textContent","classList","contains","activeClass","Search","inputVal","searchType","dataSource","fields","type","ignoreAccent","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","checkField_1","fieldValue_1","text","split","filter","data","Array","prototype","slice","call","forEach","value","isHeader","toString","indexOf","getAttribute","replace","normalize","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","match","charCodeAt","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","setAttribute","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__assign","Object","assign","t","s","n","arguments","p","hasOwnProperty","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","verb","v","op","f","TypeError","_","y","ops","pop","trys","g","sent","throw","return","Symbol","iterator","VirtualScroll","parent","_this","sentinelInfo","up","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","down","bottom","removeEventListener","addEventListener","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","popupContentElement","getBoundingClientRect","EventHandler","popupScrollHandler","touchModule","Touch","scroll","bind","virtualScrollHandler","getModuleName","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","skip","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","newQuery","removeSkipAndTakeEvents","clone","tempCustomFilter","isCustomFilter","totalData","DataManager","json","totalItemCount","typedString","resetList","queries","event","fn","currentData","isResetListCalled","isListUpdated","viewPortInfo","mode","isArray","enableSelectionOrder","targetElement","startIndex","oldUlElement","list","removeChild","updateVirtualReOrderList","itemCount","oldUlElement_1","getForQuery","take","appendUncheckList","setCurrentView","oldUlElement_2","reOrderList","skipvalue","totalItemsCount","alreadyAddedData","hideSelectedItem","getValue","Query","allowCustomValue","virtualCustomData","splice","virtualCustomSelectData","concat","renderItems","updatevirtualizationList","checkMaxSelection","getSkeletonCount","skeletonCount","virtualTrackElement","getElementsByClassName","style","GetVirtualTrackHeight","popupWrapper","virualElement","styles","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","isScrollChanged","currentFocuedListElement","currentSelectElem","getElementByValue","addListFocus","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","isRequesting","isOpenPopup","selectedValueInfo","virtualScrollRefreshAsync","_a","isTyped","filterInput","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","customFilterQuery","isVirtualTrackHeight","preventSetCurrentData","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","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","transform","debounceFunction","focusElement","activeElement","destroy","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","virtualList","DropDownBase","options","preventChange","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","virtualSelectAll","isVirtualReorder","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","isDynamicData","isPrimitiveData","isCustomFiltering","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","checkValueCase","isTextByValue","fields_1","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","ulElement","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","compile","templateName","noDataElement","isStringTemplate","nodeName","liElem","HTMLElement","Text","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","checkAndResetCache","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","getFilteringSkeletonCount","currentSkeletonCount","skeletonUpdated","abs","retainSkeleton","listContainerHeight","parseInt","actualCount","heightDimension","translateY","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","liElement","itemTemplate","window","getComputedStyle","marginBottom","skeleton","Skeleton","shape","width","cssClass","appendTo","firstChild","insertBefore","getTextByValue","properties","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","extend","htmlAttributes","isSelectGroupCheck","isGroupChecking","option","getJSONfromOption","optionGroup","child","updateFields","iconCss","field","category","options_1","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","eventArgs","cancel","isAngular","trigger","showSpinner","isWhereExist_1","emptyDataRequest","executeQuery","getQuery","isReOrder","queryElements","count","nos","condition","operator","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","notify","module","updatePopupPosition","virtualSelectAllData","virtualSelectionAll","catch","onActionFailure","hideSpinner","virtualGroupDataSource","executeLocal","records","dataManager","localDataArgs","childElementCount","updateDataList","updatePopupState","state","updateRemoteData","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","isObjectInArray","objectToFind","array","some","keys","every","findListElement","findNode","attribute","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","setStyleAttribute","zIndex","postRender","listElement","JSON","parse","stringify","disableListItem","focusItem","selectedItem","elements","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","createListItems","sortOrder","getSortedDataSource","fieldSet","groupDataSource","preventDefActionFilter","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","isDownkey","computedHeight","getValidLi","getPropertyValue","computedMarginValue","marginValue","liHeight","topIndex","virtualListCount","updateGroupHeader","returnExactCount","updateGroupFixedHeader","position","parentElement","offsetTop","scrollY","isCheckBoxUpdate","incrementalLiCollections","incrementalUlElement","incrementalListData","virtualUlElement","updateListElements","createVirtualContent","templateID","itemcheck","renderContentTemplate","borderWidth","defaultView","isNaN","liWidth","offsetWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getIndexByValueFilter","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","oldProps","setUpdateInitial","updateData","j","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","getScrollableParent","wrapperElement","eleStyle","scrollParents","overflowRegex","parentStyle","overflow","overflowY","overflowX","removeScrollEvent","addItem","itemIndex","newList","itemsCount","isListboxEmpty","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","isDisabledElement","isDisabledItemByIndex","validationAttribute","hidden","getDataByValue","_b","_c","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","resizeIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","isTouched","isFocused","autoFill","isUpdateHeaderHeight","isUpdateFooterHeight","isReactTemplateUpdate","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initialRemoteRender","isNotSearchList","isSelected","preventFocus","preventAutoFill","isValidKey","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","pageUp","pageDown","open","close","hide","space","requiredModules","modules","enableVirtualization","args","member","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","updateInitialData","onChangeEvent","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","readonly","defaultAttr","validateAttr","Input","setPlaceholder","dataBind","getAriaAttributes","aria-disabled","role","aria-expanded","aria-live","setEnabled","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","listItems_1","liItem","initValue","updateValues","isDisableItemValue","objectValue","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resizingWireEvent","resizePopup","stopResizing","resizingUnWireEvent","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","windowResize","bindCommonEvent","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","startResizing","isResizing","clientX","MouseEvent","touches","clientY","originalWidth","originalHeight","offsetHeight","originalMouseX","originalMouseY","dx","dy","minWidth","minHeight","resizeWidth","max","resizeHeight","maxHeight","isValidLI","history","back","closePopup","currentLi","setHover","hoveredItem","hasAttribute","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","enableLiCollections","spinnerElement","filterInputObj","createSpinner","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","selectedData","focusAtFirstElement","aria-activedescendant","findLi","steps","previousItem","validIndex","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","getItem","where","Predicate","previousSelectedLI","aria-describedby","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","isCustomValue","datas","foundIndex","findIndex","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","filterArgs","firstItem","searchLists","executeCloneElements","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","requiresCount","start","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","cssText","virtualElement","focusIndexItem","setSearchBox","popupElement","isDeviceFullScreen","createInput","filterBarPlaceholder","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","outerHeight","updateActionCompleteDataValues","tempItemCount","aria-hidden","aria-label","value_1","checkVal","x","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_2","actionCompleteDataUpdate","findEle","highlightedItem","refreshPopup","initialPopupHeight","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","clientHeight","listitems","searchBoxHeight","offsetValue","getOffsetValue","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","popupWidth","outerWidth","collision","X","Y","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","scrollHandler","selectedElementID","enable","scrollBottom","aria-owns","aria-controls","inputParent","animModel","popup","animation","destroyPopup","show","Animation","popupHeightValue","listHeight","allowResize","resizer","paddingBottom","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","isElementInViewport","elementRect","innerHeight","right","innerWidth","border","popupOffset","lastItem","isInitial","isInitialSelection","selectedListMargin","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","IsScrollerAtEnd","scrollHeight","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","fixedHeader","dataSourceCount","preselectedIndex","updatedCssClassValues","class","setReadOnly","calculateWidth","getListHeight","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","value_3","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","blur","disableItem","HTMLLIElement","parsedData","clear","attrArray","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","SHOW_TEXT","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","documentClickContext","isCheckAllCalled","isFromFilterChange","keyEntity","isFirstRender","isInitialized","currentText","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","destroyPopupOnHide","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","filterKeyAction","focusedElement","observedArgs","clearTimeout","filterHandler","isChildObject","expandedNodes","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","remoteDataFilter","getTreeFields","nestedFilter","portals","filteredFields","map","remoteChildFilter","filteredChild","node","isChild","isChildFiltering","isMatchedNode","matchedChildren","filteredItems","matchedDataSource","nestedChildFilter","matchedData","parentId","parentValue","checkValue","tempChild","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","showSelectAll","clickHandler","isClearButtonClick","showOverAllClear","isValue","chipWrapper","showOrHideValueTemplate","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","isValueChange","keyEventArgs","resetValue","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","updateChipAndValueTemplate","checkRemainingTemplate","updateDelimMode","delimiterChar","getOverflowVal","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","textArr","join","updateRemainTemplate","isChip","previousHtmlContent","previousData","wrapperLength","remainingItemsCount","currentHtmlContent","valueTemplateContainer","clonedElement","valueElements","lastChild","getSelectedData","treeSettings","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","initializeValueTemplate","getValueTemplateElement","includes","reactCallBack","templateElements","getNodeData","autoCheck","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","checkDisabledChildren","isCancelled","POPUP_CLASS","updatePopupHeight","oldFocussedNode","updateFocus","nodes","wrap","checkSelectAll","oldFocusedElement","getHeight","inputWidth","ddElement","documentElement","isFilter","isFooter","isScroller","getTreeDataType","expandAll","restoreFilterSelection","setEnableRTL","cloneChildField","hasChildren","expanded","imageUrl","selectable","tableName","tooltip","parentID","getTreeChildren","isChecked","childFields","getActualProperties","ds","len","updateTemplate","updateValue","getEventArgs","nodeData","getNode","removeSelectedData","updateClearButton","nextSibling","chipClose","updateDropDownIconState","spinIcon","appendSpan","isValid","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","selectedValue","nodeSelectedData","ddtValue","checkSelection","getChildNodeData","obj","newChildItems","getChildMapperFields","childNodeData","muteOnChange","templateComplier","showChip","textValue","hiddenInputValue","setChipValues","setTagValues","chip","data-value","chipContent","CHIP_CLOSE","removeChip","tempArr","setSelectAllWrapper","updateOverflowWrapper","stopPropagation","clearCheckAll","selectAllItems","arr","updateTreeSettings","updateCheckBoxState","checkBox","noRecord","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateText","updateModelMode","overFlow","prop_1","setRipple","chipsIcons_1","ensureVisible","getData","ComboBox","preventBlur","targetFocus","inputValue","customValue","valueMuteChange","changeData","isvalidTextField_1","isValidValue_1","doesItemExist","currentValue_1","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","isEndIndexValid","isIncrementalEndIndexZero","min","startIndex_1","endIndex_1","virtualListInfoStartIndex","selectedLiOffsetTopWithStartIndex","scrollTopOffset","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","currentTakeValue","currentQueryTakeValue","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","itemCreated_1","showPopupButton","checkFields1_1","_this_2","atcProps","isHighlight","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","storedSelectAllHeight","isBlurDispatching","isFilterPrevented","isFilteringAction","selectAllEventData","selectAllEventEle","isSelectAllLoop","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","selectedListData","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","removeSelectedChip","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","predicate","startindex","endindex","or","isaddNonPresentItems","and","adaptor","JsonAdaptor","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","remoteCustomValue","disableGroupHeader","mainData","mainListCollection","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","isRemoveSelection","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","virtualFilterQuery","isClearAllAction","isSkip","backCommand","isReordered","setResize","dataChecks","customData","dataItem_1","random","emptyObject_1","isNumberType_1","tempCount","isRemoteSelection","wrapperClick","checkAndScrollParent","wrapperHeight","parentMaxHeight","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","collection","previousFocusItem","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","codePoint","sizeMultiplier","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","arrowDown","arrowUp","onKeyDown","altKey","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","isScrollerAtEnd","limit","isFilterData","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","updateCheck","isVirtualElement","elementIndex","focusedLi","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","currentRemoveValue","hideElement","currentValue_2","targetEle_1","isSelectAllTarget","clearAllCallback","element2","addValue","updateWrapperText","textValues","addListSelection","addChip","activeItems","inactiveItems","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","multiCompiler","multiselectTemplate","encodeHtmlEntities","title","setClass","classes","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","onListMouseDown","isClearAllItem","preventSelection","textVal","isInitialVirtualData","delim","out_index_1","valueLength","hiddenElementContent","state_2","valueItem","listValue","isDynamicRemoteVirtualData","item_1","isChipRemove","addValidInputClass","removeListSelection","isCustomData","indexItem","noDataEle","isDynamicGroupItemUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","visibleListElements","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","isDisabled","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","firstItems","fragment_1","createDocumentFragment","concatenatedNodeList","updatedataValueItems","updateHiddenElement","beforeSelectArgs","preventSelectEvent","index_1","count_1","isVirtualSelectAll","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","removeDisabledItemsValue","dropDownIcon","reInitializePoup","msProps","checkvalue","isInitRemoteVirtualData","typedValue","boxSizing","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","minWidth_1","minHeight_1","dataIndex","indexValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","listItems_2","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","boundPreventListSelection","preventListSelection","footerHeight","headerHeight","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isBackSpace","isDataSourceUpdate","ListBox_1","jsonData","originalElement","inputString","initLoad","initialSelectedOptions","inputFormName","initWrapper","hiddenSelect","groupHdrs","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","beforeDragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","filterElem","txtLength","noRecElem","filterWireEvents","inputSearch","isRendered","initToolbarAndStyles","setCheckboxPosition","setFiltering","badge","extendedArgs","getDragArgs","dragSelected","isIos","dragEventArgs","allowDragAll","scrollParent","boundRect","stopTimer","timer","setInterval","setScrollDown","scrollElem","scrollPixel","isScrollDown","clearInterval","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getArgs","sourceArgs","destArgs","dragArgs","source","previousIndex","currentIndex","sourceArgs1","destination","targetListObj","ul_1","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","idx","jsonIdx_1","sIdx_1","fLiColl_1","currIdx_1","ul_2","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","sortable","placeHolderElement","dragArgs1","liCollElem","destElem","elems","triggerBeforeItemRender","curData","enableItems","canDisable_1","getSelectedItems","updateSelectedOptions","selElems","triggerChange","addItems","removeItems","removeItem","objValue","dupData","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","toolbarAction","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","ulList","mainCount","ulEleCount","listindex","valueindex","form","keyDownHandler","focusOutHandler","wireToolbarEvent","formResetHandler","resizeHandler","getToolElem","toolbarClickHandler","unwireEvents","clearFilterIconElem","selectHandler","liItems","autocorrect","setProperty","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","prevSelIdx","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","formattedValue","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","eData_1","ulChildren_1","lData_1","sData_1","jData_1","listDataMap_1","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","tempLiColl","flistboxarray","Number","newFlistboxArray","disabledData_1","obj1","obj2","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","char","isWordAccentCharacter","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","canFocus","liselect","txt","CSS","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","requireLeadingSpace","initRemoteRender","isListResetted","isCollided","lineBreak","isRTE","keyEventName","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isKeyAction","getLastLetter","getTextRange","isUpDownKey","rangetextContent","isRteImage","range","getCurrentRange","startContainer","currentRange","mentionRegex","lastWordRange","previousChar","charAt","lastTwoLetters","Regex","charRegex","isMatchedText","substring","lastIndexOf","startOffset","endOffset","deleteContents","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startPos","words","popupEle_1","rteRootElement","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","collapse","getClientRects","rectTop","rectLeft","iframes","iframe","contentDocument","iframeRect","doc","windowLeft","pageXOffset","clientLeft","windowTop","pageYOffset","clientTop","Node","TEXT_NODE","span_1","textNodeWidth","fontSize","offsetLeft","isSelectCancel","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","endPos","textSuffix","mentionVal","commonAncestorContainer","frag","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","pointerType","event_1","CustomEvent","detail","click","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","Inject","index.VirtualScroll","index.CheckBoxSelection"],"mappings":"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"}