@syncfusion/ej2-dropdowns 23.2.7 → 24.1.41-566987

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 (353) hide show
  1. package/CHANGELOG.md +2040 -2150
  2. package/{README.md → ReadMe.md} +217 -217
  3. package/dist/ej2-dropdowns.umd.min.js +1 -10
  4. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-dropdowns.es2015.js +710 -172
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +871 -332
  8. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  9. package/helpers/e2e/autocomplete.js +13 -13
  10. package/helpers/e2e/combobox.js +13 -13
  11. package/helpers/e2e/dropdownlist.js +13 -13
  12. package/helpers/e2e/index.js +3 -3
  13. package/helpers/e2e/listboxHelper.js +13 -13
  14. package/helpers/e2e/multiselect.js +13 -13
  15. package/license +2 -2
  16. package/package.json +80 -80
  17. package/src/auto-complete/auto-complete-model.d.ts +188 -188
  18. package/src/auto-complete/auto-complete.d.ts +12 -12
  19. package/src/auto-complete/auto-complete.js +30 -25
  20. package/src/combo-box/combo-box-model.d.ts +224 -224
  21. package/src/combo-box/combo-box.d.ts +27 -27
  22. package/src/combo-box/combo-box.js +103 -31
  23. package/src/common/incremental-search.d.ts +1 -1
  24. package/src/common/incremental-search.js +50 -7
  25. package/src/common/interface.d.ts +2 -0
  26. package/src/common/virtual-scroll.js +68 -47
  27. package/src/drop-down-base/drop-down-base-model.d.ts +200 -200
  28. package/src/drop-down-base/drop-down-base.d.ts +38 -18
  29. package/src/drop-down-base/drop-down-base.js +174 -60
  30. package/src/drop-down-list/drop-down-list-model.d.ts +202 -202
  31. package/src/drop-down-list/drop-down-list.d.ts +14 -7
  32. package/src/drop-down-list/drop-down-list.js +325 -61
  33. package/src/drop-down-tree/drop-down-tree-model.d.ts +468 -468
  34. package/src/drop-down-tree/drop-down-tree.js +43 -39
  35. package/src/list-box/list-box-model.d.ts +193 -193
  36. package/src/list-box/list-box.d.ts +2 -2
  37. package/src/list-box/list-box.js +27 -20
  38. package/src/mention/mention-model.d.ts +261 -261
  39. package/src/mention/mention.js +24 -20
  40. package/src/multi-select/checkbox-selection.js +4 -1
  41. package/src/multi-select/multi-select-model.d.ts +512 -512
  42. package/src/multi-select/multi-select.js +23 -21
  43. package/styles/auto-complete/_all.scss +1 -1
  44. package/styles/auto-complete/_bds-definition.scss +2 -0
  45. package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
  46. package/styles/auto-complete/_bootstrap-definition.scss +2 -2
  47. package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
  48. package/styles/auto-complete/_bootstrap5-definition.scss +2 -2
  49. package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
  50. package/styles/auto-complete/_fabric-definition.scss +2 -2
  51. package/styles/auto-complete/_fluent-definition.scss +2 -2
  52. package/styles/auto-complete/_fusionnew-definition.scss +2 -2
  53. package/styles/auto-complete/_highcontrast-definition.scss +2 -2
  54. package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
  55. package/styles/auto-complete/_material-dark-definition.scss +2 -2
  56. package/styles/auto-complete/_material-definition.scss +2 -2
  57. package/styles/auto-complete/_material3-definition.scss +2 -2
  58. package/styles/auto-complete/_tailwind-definition.scss +2 -2
  59. package/styles/auto-complete/material3-dark.scss +1 -1
  60. package/styles/auto-complete/material3.scss +1 -1
  61. package/styles/bootstrap-dark.css +16 -9
  62. package/styles/bootstrap.css +16 -9
  63. package/styles/bootstrap4.css +11 -9
  64. package/styles/bootstrap5-dark.css +11 -9
  65. package/styles/bootstrap5.css +11 -9
  66. package/styles/combo-box/_all.scss +1 -1
  67. package/styles/combo-box/_bds-definition.scss +2 -0
  68. package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
  69. package/styles/combo-box/_bootstrap-definition.scss +2 -2
  70. package/styles/combo-box/_bootstrap4-definition.scss +11 -11
  71. package/styles/combo-box/_bootstrap5-definition.scss +2 -2
  72. package/styles/combo-box/_fabric-dark-definition.scss +2 -2
  73. package/styles/combo-box/_fabric-definition.scss +2 -2
  74. package/styles/combo-box/_fluent-definition.scss +2 -2
  75. package/styles/combo-box/_fusionnew-definition.scss +2 -2
  76. package/styles/combo-box/_highcontrast-definition.scss +2 -2
  77. package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
  78. package/styles/combo-box/_material-dark-definition.scss +2 -2
  79. package/styles/combo-box/_material-definition.scss +2 -2
  80. package/styles/combo-box/_material3-definition.scss +2 -2
  81. package/styles/combo-box/_tailwind-definition.scss +2 -2
  82. package/styles/combo-box/material3-dark.scss +1 -1
  83. package/styles/combo-box/material3.scss +1 -1
  84. package/styles/drop-down-base/_all.scss +2 -2
  85. package/styles/drop-down-base/_bds-definition.scss +134 -0
  86. package/styles/drop-down-base/_bootstrap-dark-definition.scss +83 -83
  87. package/styles/drop-down-base/_bootstrap-definition.scss +83 -83
  88. package/styles/drop-down-base/_bootstrap4-definition.scss +90 -90
  89. package/styles/drop-down-base/_bootstrap5-definition.scss +117 -117
  90. package/styles/drop-down-base/_definition.scss +23 -23
  91. package/styles/drop-down-base/_fabric-dark-definition.scss +86 -86
  92. package/styles/drop-down-base/_fabric-definition.scss +84 -84
  93. package/styles/drop-down-base/_fluent-definition.scss +121 -121
  94. package/styles/drop-down-base/_fusionnew-definition.scss +117 -117
  95. package/styles/drop-down-base/_highcontrast-definition.scss +105 -105
  96. package/styles/drop-down-base/_highcontrast-light-definition.scss +105 -105
  97. package/styles/drop-down-base/_layout.scss +187 -195
  98. package/styles/drop-down-base/_material-dark-definition.scss +86 -86
  99. package/styles/drop-down-base/_material-definition.scss +85 -85
  100. package/styles/drop-down-base/_material3-definition.scss +87 -87
  101. package/styles/drop-down-base/_tailwind-definition.scss +129 -129
  102. package/styles/drop-down-base/_theme.scss +391 -391
  103. package/styles/drop-down-base/bootstrap-dark.css +0 -8
  104. package/styles/drop-down-base/bootstrap.css +0 -8
  105. package/styles/drop-down-base/bootstrap4.css +0 -8
  106. package/styles/drop-down-base/bootstrap5-dark.css +0 -8
  107. package/styles/drop-down-base/bootstrap5.css +0 -8
  108. package/styles/drop-down-base/fabric-dark.css +0 -8
  109. package/styles/drop-down-base/fabric.css +0 -8
  110. package/styles/drop-down-base/fluent-dark.css +0 -8
  111. package/styles/drop-down-base/fluent.css +0 -8
  112. package/styles/drop-down-base/highcontrast-light.css +0 -8
  113. package/styles/drop-down-base/highcontrast.css +0 -8
  114. package/styles/drop-down-base/material-dark.css +0 -8
  115. package/styles/drop-down-base/material.css +0 -8
  116. package/styles/drop-down-base/material3-dark.css +0 -8
  117. package/styles/drop-down-base/material3-dark.scss +1 -1
  118. package/styles/drop-down-base/material3.css +0 -8
  119. package/styles/drop-down-base/material3.scss +1 -1
  120. package/styles/drop-down-base/tailwind-dark.css +0 -8
  121. package/styles/drop-down-base/tailwind.css +0 -8
  122. package/styles/drop-down-list/_all.scss +3 -3
  123. package/styles/drop-down-list/_bds-definition.scss +134 -0
  124. package/styles/drop-down-list/_bootstrap-dark-definition.scss +157 -157
  125. package/styles/drop-down-list/_bootstrap-definition.scss +156 -156
  126. package/styles/drop-down-list/_bootstrap4-definition.scss +202 -202
  127. package/styles/drop-down-list/_bootstrap5-definition.scss +201 -201
  128. package/styles/drop-down-list/_fabric-dark-definition.scss +128 -128
  129. package/styles/drop-down-list/_fabric-definition.scss +124 -124
  130. package/styles/drop-down-list/_fluent-definition.scss +185 -185
  131. package/styles/drop-down-list/_fusionnew-definition.scss +201 -201
  132. package/styles/drop-down-list/_highcontrast-definition.scss +142 -142
  133. package/styles/drop-down-list/_highcontrast-light-definition.scss +144 -144
  134. package/styles/drop-down-list/_layout.scss +315 -310
  135. package/styles/drop-down-list/_material-dark-definition.scss +143 -143
  136. package/styles/drop-down-list/_material-definition.scss +167 -167
  137. package/styles/drop-down-list/_material3-definition.scss +180 -180
  138. package/styles/drop-down-list/_tailwind-definition.scss +134 -134
  139. package/styles/drop-down-list/_theme.scss +10 -10
  140. package/styles/drop-down-list/bootstrap-dark.css +5 -0
  141. package/styles/drop-down-list/bootstrap.css +5 -0
  142. package/styles/drop-down-list/bootstrap4.css +5 -0
  143. package/styles/drop-down-list/bootstrap5-dark.css +5 -0
  144. package/styles/drop-down-list/bootstrap5.css +5 -0
  145. package/styles/drop-down-list/fabric-dark.css +5 -0
  146. package/styles/drop-down-list/fabric.css +5 -0
  147. package/styles/drop-down-list/fluent-dark.css +5 -0
  148. package/styles/drop-down-list/fluent.css +5 -0
  149. package/styles/drop-down-list/highcontrast-light.css +5 -0
  150. package/styles/drop-down-list/highcontrast.css +5 -0
  151. package/styles/drop-down-list/icons/_bds.scss +14 -0
  152. package/styles/drop-down-list/icons/_bootstrap-dark.scss +14 -14
  153. package/styles/drop-down-list/icons/_bootstrap.scss +14 -14
  154. package/styles/drop-down-list/icons/_bootstrap4.scss +14 -14
  155. package/styles/drop-down-list/icons/_bootstrap5.scss +14 -14
  156. package/styles/drop-down-list/icons/_fabric-dark.scss +14 -14
  157. package/styles/drop-down-list/icons/_fabric.scss +14 -14
  158. package/styles/drop-down-list/icons/_fluent.scss +14 -14
  159. package/styles/drop-down-list/icons/_fusionnew.scss +14 -14
  160. package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
  161. package/styles/drop-down-list/icons/_highcontrast.scss +14 -14
  162. package/styles/drop-down-list/icons/_material-dark.scss +14 -14
  163. package/styles/drop-down-list/icons/_material.scss +14 -14
  164. package/styles/drop-down-list/icons/_material3.scss +14 -14
  165. package/styles/drop-down-list/icons/_tailwind.scss +14 -14
  166. package/styles/drop-down-list/material-dark.css +5 -0
  167. package/styles/drop-down-list/material.css +5 -0
  168. package/styles/drop-down-list/material3-dark.css +5 -0
  169. package/styles/drop-down-list/material3-dark.scss +1 -1
  170. package/styles/drop-down-list/material3.css +5 -0
  171. package/styles/drop-down-list/material3.scss +1 -1
  172. package/styles/drop-down-list/tailwind-dark.css +5 -0
  173. package/styles/drop-down-list/tailwind.css +5 -0
  174. package/styles/drop-down-tree/_all.scss +2 -2
  175. package/styles/drop-down-tree/_bds-definition.scss +61 -0
  176. package/styles/drop-down-tree/_bootstrap-dark-definition.scss +71 -71
  177. package/styles/drop-down-tree/_bootstrap-definition.scss +70 -70
  178. package/styles/drop-down-tree/_bootstrap4-definition.scss +71 -71
  179. package/styles/drop-down-tree/_bootstrap5-definition.scss +59 -59
  180. package/styles/drop-down-tree/_fabric-dark-definition.scss +71 -71
  181. package/styles/drop-down-tree/_fabric-definition.scss +71 -71
  182. package/styles/drop-down-tree/_fluent-definition.scss +65 -65
  183. package/styles/drop-down-tree/_fusionnew-definition.scss +59 -59
  184. package/styles/drop-down-tree/_highcontrast-definition.scss +71 -71
  185. package/styles/drop-down-tree/_highcontrast-light-definition.scss +71 -71
  186. package/styles/drop-down-tree/_layout.scss +1423 -1412
  187. package/styles/drop-down-tree/_material-dark-definition.scss +72 -72
  188. package/styles/drop-down-tree/_material-definition.scss +72 -72
  189. package/styles/drop-down-tree/_material3-definition.scss +76 -76
  190. package/styles/drop-down-tree/_tailwind-definition.scss +61 -61
  191. package/styles/drop-down-tree/_theme.scss +132 -132
  192. package/styles/drop-down-tree/bootstrap-dark.css +4 -0
  193. package/styles/drop-down-tree/bootstrap.css +4 -0
  194. package/styles/drop-down-tree/bootstrap4.css +4 -0
  195. package/styles/drop-down-tree/bootstrap5-dark.css +4 -0
  196. package/styles/drop-down-tree/bootstrap5.css +4 -0
  197. package/styles/drop-down-tree/fabric-dark.css +4 -0
  198. package/styles/drop-down-tree/fabric.css +4 -0
  199. package/styles/drop-down-tree/fluent-dark.css +6 -0
  200. package/styles/drop-down-tree/fluent.css +6 -0
  201. package/styles/drop-down-tree/highcontrast-light.css +4 -0
  202. package/styles/drop-down-tree/highcontrast.css +4 -0
  203. package/styles/drop-down-tree/icons/_bds.scss +11 -0
  204. package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
  205. package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
  206. package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
  207. package/styles/drop-down-tree/icons/_bootstrap5.scss +11 -11
  208. package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
  209. package/styles/drop-down-tree/icons/_fabric.scss +11 -11
  210. package/styles/drop-down-tree/icons/_fluent.scss +11 -11
  211. package/styles/drop-down-tree/icons/_fusionnew.scss +11 -11
  212. package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
  213. package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
  214. package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
  215. package/styles/drop-down-tree/icons/_material.scss +11 -11
  216. package/styles/drop-down-tree/icons/_material3.scss +11 -11
  217. package/styles/drop-down-tree/icons/_tailwind-dark.scss +11 -11
  218. package/styles/drop-down-tree/icons/_tailwind.scss +11 -11
  219. package/styles/drop-down-tree/material-dark.css +4 -0
  220. package/styles/drop-down-tree/material.css +4 -0
  221. package/styles/drop-down-tree/material3-dark.css +4 -0
  222. package/styles/drop-down-tree/material3-dark.scss +1 -1
  223. package/styles/drop-down-tree/material3.css +4 -0
  224. package/styles/drop-down-tree/material3.scss +1 -1
  225. package/styles/drop-down-tree/tailwind-dark.css +4 -0
  226. package/styles/drop-down-tree/tailwind.css +4 -0
  227. package/styles/fabric-dark.css +12 -9
  228. package/styles/fabric.css +12 -9
  229. package/styles/fluent-dark.css +18 -9
  230. package/styles/fluent.css +18 -9
  231. package/styles/highcontrast-light.css +12 -9
  232. package/styles/highcontrast.css +12 -9
  233. package/styles/list-box/_all.scss +2 -2
  234. package/styles/list-box/_bds-definition.scss +136 -0
  235. package/styles/list-box/_bootstrap-dark-definition.scss +126 -126
  236. package/styles/list-box/_bootstrap-definition.scss +119 -119
  237. package/styles/list-box/_bootstrap4-definition.scss +124 -124
  238. package/styles/list-box/_bootstrap5-definition.scss +120 -120
  239. package/styles/list-box/_fabric-dark-definition.scss +126 -126
  240. package/styles/list-box/_fabric-definition.scss +119 -119
  241. package/styles/list-box/_fluent-definition.scss +120 -120
  242. package/styles/list-box/_fusionnew-definition.scss +111 -111
  243. package/styles/list-box/_highcontrast-definition.scss +119 -119
  244. package/styles/list-box/_highcontrast-light-definition.scss +126 -126
  245. package/styles/list-box/_layout.scss +542 -542
  246. package/styles/list-box/_material-dark-definition.scss +126 -126
  247. package/styles/list-box/_material-definition.scss +119 -119
  248. package/styles/list-box/_material3-definition.scss +119 -119
  249. package/styles/list-box/_tailwind-definition.scss +119 -119
  250. package/styles/list-box/_theme.scss +382 -382
  251. package/styles/list-box/icons/_bds.scss +25 -0
  252. package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
  253. package/styles/list-box/icons/_bootstrap.scss +25 -25
  254. package/styles/list-box/icons/_bootstrap4.scss +25 -25
  255. package/styles/list-box/icons/_bootstrap5.scss +25 -25
  256. package/styles/list-box/icons/_fabric-dark.scss +25 -25
  257. package/styles/list-box/icons/_fabric.scss +25 -25
  258. package/styles/list-box/icons/_fluent.scss +25 -25
  259. package/styles/list-box/icons/_fusionnew.scss +25 -25
  260. package/styles/list-box/icons/_highcontrast-light.scss +25 -25
  261. package/styles/list-box/icons/_highcontrast.scss +25 -25
  262. package/styles/list-box/icons/_material-dark.scss +25 -25
  263. package/styles/list-box/icons/_material.scss +25 -25
  264. package/styles/list-box/icons/_material3.scss +25 -25
  265. package/styles/list-box/icons/_tailwind-dark.scss +25 -25
  266. package/styles/list-box/icons/_tailwind.scss +25 -25
  267. package/styles/list-box/material3-dark.scss +1 -1
  268. package/styles/list-box/material3.scss +1 -1
  269. package/styles/material-dark.css +11 -9
  270. package/styles/material.css +11 -9
  271. package/styles/material3-dark.css +11 -9
  272. package/styles/material3-dark.scss +1 -1
  273. package/styles/material3.css +11 -9
  274. package/styles/material3.scss +1 -1
  275. package/styles/mention/_all.scss +1 -1
  276. package/styles/mention/_bds-definition.scss +1 -0
  277. package/styles/mention/_bootstrap-dark-definition.scss +3 -3
  278. package/styles/mention/_bootstrap-definition.scss +3 -3
  279. package/styles/mention/_bootstrap4-definition.scss +3 -3
  280. package/styles/mention/_bootstrap5-definition.scss +1 -1
  281. package/styles/mention/_fabric-dark-definition.scss +2 -2
  282. package/styles/mention/_fabric-definition.scss +3 -3
  283. package/styles/mention/_fluent-definition.scss +1 -1
  284. package/styles/mention/_fusionnew-definition.scss +1 -1
  285. package/styles/mention/_highcontrast-definition.scss +3 -3
  286. package/styles/mention/_highcontrast-light-definition.scss +3 -3
  287. package/styles/mention/_layout.scss +6 -6
  288. package/styles/mention/_material-dark-definition.scss +3 -3
  289. package/styles/mention/_material-definition.scss +3 -3
  290. package/styles/mention/_material3-definition.scss +1 -1
  291. package/styles/mention/_tailwind-definition.scss +1 -1
  292. package/styles/mention/material3-dark.scss +1 -1
  293. package/styles/mention/material3.scss +1 -1
  294. package/styles/multi-select/_all.scss +2 -2
  295. package/styles/multi-select/_bds-definition.scss +235 -0
  296. package/styles/multi-select/_bootstrap-dark-definition.scss +207 -203
  297. package/styles/multi-select/_bootstrap-definition.scss +196 -192
  298. package/styles/multi-select/_bootstrap4-definition.scss +278 -278
  299. package/styles/multi-select/_bootstrap5-definition.scss +230 -230
  300. package/styles/multi-select/_fabric-dark-definition.scss +192 -192
  301. package/styles/multi-select/_fabric-definition.scss +183 -183
  302. package/styles/multi-select/_fluent-definition.scss +246 -241
  303. package/styles/multi-select/_fusionnew-definition.scss +227 -227
  304. package/styles/multi-select/_highcontrast-definition.scss +303 -303
  305. package/styles/multi-select/_highcontrast-light-definition.scss +297 -297
  306. package/styles/multi-select/_layout.scss +2206 -2199
  307. package/styles/multi-select/_material-dark-definition.scss +230 -230
  308. package/styles/multi-select/_material-definition.scss +223 -223
  309. package/styles/multi-select/_material3-definition.scss +246 -246
  310. package/styles/multi-select/_tailwind-definition.scss +235 -235
  311. package/styles/multi-select/_theme.scss +586 -586
  312. package/styles/multi-select/bootstrap-dark.css +7 -1
  313. package/styles/multi-select/bootstrap.css +7 -1
  314. package/styles/multi-select/bootstrap4.css +2 -1
  315. package/styles/multi-select/bootstrap5-dark.css +2 -1
  316. package/styles/multi-select/bootstrap5.css +2 -1
  317. package/styles/multi-select/fabric-dark.css +3 -1
  318. package/styles/multi-select/fabric.css +3 -1
  319. package/styles/multi-select/fluent-dark.css +7 -1
  320. package/styles/multi-select/fluent.css +7 -1
  321. package/styles/multi-select/highcontrast-light.css +3 -1
  322. package/styles/multi-select/highcontrast.css +3 -1
  323. package/styles/multi-select/icons/_bds.scss +26 -0
  324. package/styles/multi-select/icons/_bootstrap-dark.scss +26 -26
  325. package/styles/multi-select/icons/_bootstrap.scss +26 -26
  326. package/styles/multi-select/icons/_bootstrap4.scss +37 -37
  327. package/styles/multi-select/icons/_bootstrap5.scss +26 -26
  328. package/styles/multi-select/icons/_fabric-dark.scss +26 -26
  329. package/styles/multi-select/icons/_fabric.scss +26 -26
  330. package/styles/multi-select/icons/_fluent.scss +55 -55
  331. package/styles/multi-select/icons/_fusionnew.scss +26 -26
  332. package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
  333. package/styles/multi-select/icons/_highcontrast.scss +26 -26
  334. package/styles/multi-select/icons/_material-dark.scss +693 -693
  335. package/styles/multi-select/icons/_material.scss +693 -693
  336. package/styles/multi-select/icons/_material3.scss +692 -692
  337. package/styles/multi-select/icons/_tailwind.scss +26 -26
  338. package/styles/multi-select/material-dark.css +2 -1
  339. package/styles/multi-select/material.css +2 -1
  340. package/styles/multi-select/material3-dark.css +2 -1
  341. package/styles/multi-select/material3-dark.scss +1 -1
  342. package/styles/multi-select/material3.css +2 -1
  343. package/styles/multi-select/material3.scss +1 -1
  344. package/styles/multi-select/tailwind-dark.css +2 -1
  345. package/styles/multi-select/tailwind.css +2 -1
  346. package/styles/tailwind-dark.css +11 -9
  347. package/styles/tailwind.css +11 -9
  348. package/.eslintrc.json +0 -260
  349. package/dist/ej2-dropdowns.min.js +0 -10
  350. package/dist/global/ej2-dropdowns.min.js +0 -11
  351. package/dist/global/ej2-dropdowns.min.js.map +0 -1
  352. package/dist/global/index.d.ts +0 -14
  353. 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 matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\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 return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<span class=\"e-highlight\">$1</span>');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '<input placeholder=\"' + placeholder + '\"/>';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EventHandler, Browser, select, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var cHeight = _this.parent.popupContentElement.clientHeight;\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n }, axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function (e) {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n if (!isNullOrUndefined(this.parent.query)) {\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\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 () {\n // eslint-disable-next-line\n var currentData = [];\n for (var i = this.parent.viewPortInfo.startIndex; i < this.parent.viewPortInfo.endIndex; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.renderItems(currentData, this.parent.fields);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.parent.GetVirtualTrackHeight();\n }\n this.parent.UpdateSkeleton();\n this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.parent.getTransformValues();\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var sortedDataStartIndex = 0;\n var vEndIndex = this.parent && this.parent.viewPortInfo.endIndex !== 0 ? this.parent.viewPortInfo.endIndex : sortedDataStartIndex + this.parent.getItems().length;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised && !((this.parent.totalItemCount == queryStartIndex) && (this.parent.totalItemCount == queryEndIndex))) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n }\n this.setCurrentViewDataAsync();\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString != this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n this.parent.isCustomFilter = false;\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction) {\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n var virtualListCount = this.parent.list.querySelectorAll('.e-virtual-list').length;\n var listElement = this.parent.list.querySelector('.' + 'e-list-item');\n var translateY = scrollArgs.offset.top - (listElement.offsetHeight * virtualListCount);\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style.transform = \"translate(0px,\" + translateY + \"px)\";\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getPageCount = function (popupElement, returnExactCount) {\n if (returnExactCount === void 0) { returnExactCount = false; }\n var list = popupElement && popupElement.querySelector('.e-content');\n if (list) {\n var liHeight = list.classList.contains('e-nodata') ? null : getComputedStyle(list.querySelectorAll('.e-list-item')[0], null).getPropertyValue('height');\n var pageCount = list.getBoundingClientRect().height / parseInt(liHeight, 10);\n return returnExactCount ? pageCount : Math.round(pageCount);\n }\n return 0;\n };\n ;\n VirtualScroll.prototype.getRowHeight = function () {\n return (isNullOrUndefined(this.parent.liCollections) || this.parent.liCollections.length == 0) ? 0 : Math.ceil(this.parent.liCollections[0].getBoundingClientRect().height);\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement.getBoundingClientRect().height;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.virtualItemCount / 2 + pageSizeBy4)))\n && infoType.endIndex !== totalItemCount)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.virtualItemCount)\n : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount ? (infoType.endIndex - this.parent.virtualItemCount > 0 ? infoType.endIndex - this.parent.virtualItemCount : 0) : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n }\n else if (infoType.direction === 'up') {\n if (infoType.startIndex && infoType.endIndex) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex) {\n var idxAddedToExactTop = (pageSizeBy4) > infoViewIndices ? pageSizeBy4 :\n (infoViewIndices + infoViewIndices / 4);\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n }\n else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n var infoview = _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex != pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = \"translate(0px,\" + top + \"px)\";\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n _this.dataCount = e.count;\n _this.totalItemCount = e.count;\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n _this.isRequesting = false;\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 dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.dataCount = listItems.count;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.totalItemCount = listItems.count;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n this.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 else if ((!virtualUlElement)) {\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.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n }\n }\n }\n else {\n ulElement = this.createListItems(listData, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n this.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 else if ((!virtualUlElement)) {\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.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n for (var i = 0; i < listItems.children.length; i++) {\n if (!isNullOrUndefined(value) && listItems.children[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\n[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.skeletonCount = 32;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.itemCount = 10;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.isTouched = false;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n // 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 DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.selectedLI.dataset.value;\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_2 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_2);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization) {\n findLi = this.skeletonCount;\n }\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n var count = (pageCount * 2) - 4;\n this.activeIndex = Math.round(count);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = 1;\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps >= 0 ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(new Predicate(fields, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.itemData = e.result[0];\n _this.setProperties({ 'text': e.result[0].text, 'value': e.result[0].value }, true);\n }\n });\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n this.setProperties({ 'text': getItem[0].text, 'value': getItem[0].value }, true);\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '<option selected>' + this.text + '</option>';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.getFilteringSkeletonCount = function () {\n var difference = this.dataCount - this.viewPortInfo.endIndex;\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : difference > this.skeletonCount ? this.skeletonCount : difference > 0 ? difference : 0;\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\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.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listHeight != null ? parseInt(this.listHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 2 < this.itemCount ? this.itemCount : actualCount * 2;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2) + 2;\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0)) {\n var takeValue = this.getTakeValue();\n if (this.allowFiltering) {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n filterQuery.take(takeValue);\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.enableVirtualization) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownListClasses.virtualList, styles: 'overflow: inherit' });\n if (this.enableVirtualization && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_3 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_3) ||\n (getValue(_this.fields.value, data) === value_3));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var findEle = this.findListElement(this.list, 'li', 'data-value', this.value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.checkAndResetCache = function () {\n if (this.enableVirtualization) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = { currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount, };\n this.selectedValueInfo = null;\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownList.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n return heightDimension;\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value) {\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 + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset + (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset - (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\n }\n var dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n if (this.enableVirtualization && this.isFiltering() && this.value != null && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(Array.isArray(props.dataSource) && props.dataSource.length === 0)) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex)) {\n newProp.index = this.preselectedIndex;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && this.getModuleName() === 'combobox') {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * <input type=\"text\" id=\"tree\"></input>\n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n // eslint-disable-next-line\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_popup', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n this.ensureAutoCheck();\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'textbox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n document.body.appendChild(this.popupDiv);\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.ensureAutoCheck = function () {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value,\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (value === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(value, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = _this.nestedFilter(value, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.hasTemplate && _this.portals) {\n _this.portals = [].concat(_this.treeObj.portals);\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n // eslint-disable-next-line\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n // eslint-disable-next-line\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedData = [];\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n // eslint-disable-next-line\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.fields.text];\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n var disable = this.enabled ? 'false' : 'true';\n return {\n 'aria-disabled': disable,\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n // eslint-disable-next-line\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n // eslint-disable-next-line\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNOU(this.htmlAttributes[\"\" + htmlAttr])) {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n // eslint-disable-next-line\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getItems = function (givenText) {\n // eslint-disable-next-line\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n // eslint-disable-next-line\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n // eslint-disable-next-line\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo('#' + this.tree.id);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n if (this.isReact)\n this.refresh();\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled) {\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals);\n /* eslint-enable */\n _this.renderReactTemplates();\n }\n }\n if (!isCancelled) {\n attributes(_this.inputWrapper, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n if (_this.checkSelectAll && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNOU(this.inputWrapper) && this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource))\n this.fields.dataSource = [];\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) || !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n // eslint-disable-next-line\n var checkData = args.data;\n // eslint-disable-next-line\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n // eslint-disable-next-line\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li .e-checkbox-wrapper[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 || (!isNOU(args.data[0]) && args.data[0].isChecked === 'false'))) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && (args.isInteracted || this.isCheckAllCalled || (!isNOU(args.data[0]) && args.data[0].isChecked === 'true'))) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function (args) {\n if (this.hasTemplate && this.portals) {\n this.portals = [].concat(this.treeObj.portals);\n /* eslint-enable */\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length == 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getSelectedData = function (value) {\n // eslint-disable-next-line\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n // eslint-disable-next-line\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '<option selected value =\"' + this.value[i] + '\">' +\n this.selectedText[this.selectedText.length - 1] + '</option>';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP,\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n // eslint-disable-next-line\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n var e = void 0;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (this.value == [] && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = true;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.ensureAutoCheck();\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n // eslint-disable-next-line\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n this.ensureAutoCheck();\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== \"Custom\") {\n return;\n }\n this.chipCollection.innerHTML = \"\";\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n // eslint-disable-next-line\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputWrapper, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property(\"${value.length} item(s) selected\")\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-list/drop-down-list-model.d.ts'/>\nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\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 === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n 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 addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * <input id=\"list\" type=\"text\"/>\n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var takeValue = this.getTakeValue();\n filterQuery.skip(this.virtualItemStartIndex);\n filterQuery.take(takeValue);\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.enableVirtualization) {\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 this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n var isHtmlElement = /<[^>]*>/g.test(e.item.innerText);\n if (isHtmlElement) {\n e.item.innerText = e.item.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var multiselectObj = new Multiselect();\n * multiselectObj.appendTo(\"#list\");\n * </script>\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data);\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '<option selected value =\"' + value + '\">' + index + '</option>';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-labelledby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle_1], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <select id=\"listbox\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n }\n this.initWrapper();\n this.setSelection();\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n var filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n var txtLength = this.filterInput.value.length;\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (args.items !== items) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value, index) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n fListBox.updateMainList();\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (isRefresh) {\n var noRecElem = fListBox.ulElement.childNodes[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, \n // eslint-disable-next-line prefer-spread\n Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (var i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n var fliCollections = [].slice.call(fListBox.liCollections);\n var tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.liCollections = [];\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = [];\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && !this.allowFiltering) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n li.focus();\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n li.focus();\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '<option selected>' + this.value[i] + '</option>';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { KeyboardEvents, compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement && _this.inputElement.parentElement.parentElement &&\n _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {\n if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : range.getBoundingClientRect();\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement(\"span\");\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rect.top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rect.left + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === \"down\" || e.action === \"up\")) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix;\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() && this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '<span contenteditable=\"true\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import * as index from './index';\nindex.DropDownList.Inject(index.VirtualScroll);\nindex.ComboBox.Inject(index.VirtualScroll);\nindex.AutoComplete.Inject(index.VirtualScroll);\nindex.MultiSelect.Inject(index.CheckBoxSelection);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","prevString","i","matches","length","classList","contains","activeClass","listItems","strLength","item","innerText","substr","push","Search","inputVal","searchType","dataSource","fields","type","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","text","checkField_1","fieldValue_1","split","filter","data","Array","prototype","slice","call","forEach","value","isHeader","textContent","toString","indexOf","getAttribute","replace","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__assign","Object","assign","t","s","n","arguments","p","hasOwnProperty","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","verb","v","op","f","TypeError","_","y","ops","pop","trys","g","sent","throw","return","Symbol","iterator","VirtualScroll","parent","_this","sentinelInfo","up","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","down","popupContentElement","clientHeight","bottom","removeEventListener","addEventListener","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","getBoundingClientRect","EventHandler","popupScrollHandler","touchModule","Touch","scroll","bind","virtualScrollHandler","getModuleName","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","skip","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","newQuery","removeSkipAndTakeEvents","clone","resetList","queries","event","fn","currentData","viewPortInfo","startIndex","alreadyAddedData","renderItems","virtualTrackElement","list","getElementsByClassName","style","GetVirtualTrackHeight","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","getItems","totalItemCount","isOpenPopup","selectedValueInfo","Query","virtualScrollRefreshAsync","_a","isCustomFilter","isTyped","typedString","filterInput","getSkeletonCount","dataCount","itemCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","virtualListCount","listElement","translateY","offsetHeight","transform","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","updateSelectionList","previousInfo","popupElement","returnExactCount","liHeight","getComputedStyle","getPropertyValue","height","parseInt","Math","round","getRowHeight","ceil","isscrollAction","infoType","offsets","previousEndIndex","vHeight","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","floor","eIndex","idxAddedToExactTop","scrollPreStartIndex","delay","Browser","name","prevTop","debounced100","debounce","debounced50","target","scrollTop","left","scrollLeft","current","pstartIndex","scrollOffsetargs","debounceFunction","focusElement","activeElement","destroy","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","DropDownBase","options","preventChange","isAngular","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isAllowFiltering","virtualizedItemsCount","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","ignoreAccent","checkValueCase","isTextByValue","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","getValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","ulElement","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","compile","templateName","noDataElement","isStringTemplate","nodeName","liElem","setAttribute","HTMLElement","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","getTextByValue","properties","allowCustomValue","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","extend","htmlAttributes","option","getJSONfromOption","optionGroup","child","updateFields","groupBy","iconCss","field","options_1","json","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","eventArgs","cancel","trigger","showSpinner","DataManager","emptyDataRequest","executeQuery","getQuery","count","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","catch","onActionFailure","hideSpinner","dataManager","executeLocal","localDataArgs","itemTemplate","childElementCount","updateDataList","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","findListElement","findNode","attribute","liElement","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","notify","module","isReact","clearTemplate","fixedHeaderElement","postRender","focusItem","selectedItem","updateVirtualizationProperties","filtering","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","sortOrder","getSortedDataSource","groupDataSource","take","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","zIndex","scrollStop","getValidLi","topIndex","currentLi","oldUlElement","virtualUlElement","templateID","itemcheck","renderContentTemplate","parentElement","borderWidth","defaultView","isNaN","liWidth","offsetWidth","width","setStyleAttribute","firstLi","textField","getDataSource","addSorting","getIndexByValueFilter","selectData","getIndexByValue","dispatchEvent","evt","createEvent","initEvent","setFields","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","setUpdateInitial","updateData","j","keys","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","wrapperElement","insertBefore","removeScrollEvent","addItem","itemIndex","newList","itemsCount","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","splice","validationAttribute","hidden","getDataByValue","_b","_c","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","virtualList","inputObject","container","buttons","DropDownList","skeletonCount","isListSearched","virtualListHeight","isTouched","IsScrollerAtEnd","scrollHeight","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initRemoteRender","isNotSearchList","isSelected","preventFocus","preventAutoFill","isValidKey","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","pageUp","pageDown","open","close","hide","space","requiredModules","modules","enableVirtualization","args","member","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","onChangeEvent","checkAndResetCache","updateInitialData","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","readonly","defaultAttr","validateAttr","Input","setPlaceholder","dataBind","getAriaAttributes","aria-disabled","role","aria-expanded","aria-live","setEnabled","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","window","windowResize","bindCommonEvent","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","closePopup","setHover","hoveredItem","hasAttribute","setScrollPosition","spinnerElement","filterInputObj","createSpinner","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","focusEle","isSelectFocusItem","selectedLiOffsetTop","offsetTop","virtualIndex","nextItem","dataset","value_2","findLi","steps","previousItem","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","where","Predicate","getItem","previousSelectedLI","aria-describedby","aria-activedescendant","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","searchLists","getFilteringSkeletonCount","difference","currentSkeletonCount","abs","retainSkeleton","listHeight","actualCount","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","requiresCount","start","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","styles","virualElement","focusIndexItem","setSearchBox","createInput","filterBarPlaceholder","cssClass","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","skeleton","Skeleton","shape","appendTo","firstChild","outerHeight","tempItemCount","aria-hidden","some","x","setInputValue","updateActionCompleteDataValues","allowCustom","isValueInList","addNewItem","valueToFind","isArray","fieldValue","checkField","newElement","value_3","actionCompleteDataUpdate","findEle","highlightedItem","refreshPopup","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","listitems","searchBoxHeight","maxHeight","offsetValue","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","checkCollision","collision","X","Y","position","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","getScrollableParent","scrollHandler","selectedElementID","enable","scrollBottom","aria-owns","inputParent","animModel","popup","animation","destroyPopup","show","Animation","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","innerHeight","border","popupOffset","lastItem","paddingBottom","popupWidth","isInitial","isInitialSelection","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","match","isFilterValue","scrollableParentElements_1","fixedHeader","removeChild","dataSourceCount","preselectedIndex","updatedCssClassValues","aria-label","class","setReadOnly","calculateWidth","getListHeight","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","blur","attrArray","clear","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","isCheckAllCalled","isFromFilterChange","keyEntity","isFirstRender","isInitialized","currentText","currentValue","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","ensureAutoCheck","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","mode","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","treeSettings","autoCheck","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","clearTimeout","filterHandler","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","nestedFilter","getTreeFields","portals","concat","filteredFields","matchedDataSource","filteredChild","nestedChildFilter","node","isMatchedNode","matchedChildren","filteredItems","matchedData","parentId","parentValue","checkValue","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","isClearButtonClick","showOverAllClear","isValue","chipWrapper","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","observedArgs","isValueChange","keyEventArgs","showSelectAll","clickHandler","focusedElement","resetValue","aria-haspopup","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","delimiterChar","getOverflowVal","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","textArr","join","chips","lastChild","updateRemainTemplate","updateDelimMode","getSelectedData","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","state","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","refresh","isCancelled","POPUP_CLASS","updatePopupHeight","checkSelectAll","wrap","getHeight","inputWidth","ddElement","documentElement","isFilter","isFooter","isScroller","getTreeDataType","expandAll","restoreFilterSelection","elements","setEnableRTL","cloneChildField","hasChildren","expanded","imageUrl","selectable","tableName","tooltip","parentID","getTreeChildren","isChecked","childFields","getActualProperties","ds","len","updateTemplate","getEventArgs","nodeData","getNode","removeSelectedData","nodes","updateClearButton","nextSibling","chipClose","updateDropDownIconState","spinIcon","appendSpan","isValid","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","ddtValue","checkSelection","getNodeData","getChildNodeData","obj","newChildItems","getChildMapperFields","childNodeData","muteOnChange","textValue","hiddenInputValue","setChipValues","setTagValues","chip","data-value","chipContent","CHIP_CLOSE","removeChip","tempArr","templateComplier","setSelectAllWrapper","updateOverflowWrapper","clearCheckAll","selectAllItems","arr","updateTreeSettings","updateValue","updateCheckBoxState","checkBox","noRecord","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateText","updateModelMode","overFlow","ensureVisible","getData","ComboBox","preventBlur","targetFocus","inputValue","customValue","valueMuteChange","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","changeData","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","queryElements","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","charCodeAt","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","popupWrapper","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","getForQuery","predicate","or","adaptor","JsonAdaptor","proxy","presentItemValue","addNonPresentItems","updateActionList","mainData","mainListCollection","remoteCustomValue","checkForCustomValue","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","backCommand","dataChecks","customData","random","JSON","parse","stringify","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","getPagingCount","collection","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","onKeyDown","altKey","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","limit","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","moveByTop","filterInputClassName","updateCheck","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","hideElement","targetEle_1","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","multiCompiler","multiselectTemplate","encodeHtmlEntities","title","setClass","classes","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","onListMouseDown","textVal","delim","valueLength","hiddenElementContent","valueItem","listValue","updateWrapperText","addValidInputClass","removeListSelection","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","index_1","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","map","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isDataSourceUpdate","ListBox_1","inputString","initLoad","isCustomFiltering","initialSelectedOptions","initWrapper","hiddenSelect","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","dragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","jsonData","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","noRecElem","filterWireEvents","initToolbarAndStyles","setCheckboxPosition","setFiltering","filterElem","txtLength","badge","getDragArgs","dragSelected","isIos","overflow","dragEventArgs","allowDragAll","scrollParent","boundRect","stopTimer","clientY","timer","setInterval","setScrollDown","scrollElem","scrollPixel","isScrollDown","clearInterval","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getArgs","sourceArgs","previousData","destArgs","dragArgs","source","previousIndex","currentIndex","sourceArgs1","destination","targetListObj","ul_1","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","idx","jsonIdx_1","sIdx_1","fLiColl_1","currIdx_1","ul_2","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","sortable","placeHolderElement","dragArgs1","liCollElem","destElem","elems","triggerBeforeItemRender","curData","enableItems","getSelectedItems","updateSelectedOptions","selElems","triggerChange","addItems","removeItems","removeItem","dupData","itemIdx","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","ulList","mainCount","ulEleCount","listindex","valueindex","form","keyDownHandler","focusOutHandler","wireToolbarEvent","formResetHandler","getToolElem","toolbarClickHandler","unwireEvents","clearFilterIconElem","selectHandler","liItems","autocorrect","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","min","prevSelIdx","max","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","toolbarAction","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","Number","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","stopPropagation","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","isListResetted","isCollided","lineBreak","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isUpDownKey","rangetextContent","range","getCurrentRange","startContainer","currentRange","getTextRange","lastWordRange","getLastLetter","Regex","charRegex","isMatchedText","charAt","substring","lastIndexOf","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startOffset","startPos","words","popupEle_1","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","cssText","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","endOffset","collapse","getClientRects","doc","windowLeft","pageXOffset","clientLeft","windowTop","pageYOffset","clientTop","Node","TEXT_NODE","span_1","textNodeWidth","fontSize","offsetLeft","isSelectCancel","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","textSuffix","endPos","mentionVal","commonAncestorContainer","deleteContents","frag","createDocumentFragment","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","index.DropDownList","Inject","index.VirtualScroll","index.ComboBox","index.AutoComplete","index.MultiSelect","index.CheckBoxSelection","index.ListBox"],"mappings":"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"}