@syncfusion/ej2-dropdowns 25.2.3 → 25.2.5-30068
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2186 -2140
- package/{README.md → ReadMe.md} +217 -217
- package/dist/ej2-dropdowns.umd.min.js +1 -10
- package/dist/ej2-dropdowns.umd.min.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es2015.js +293 -197
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +460 -363
- package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
- package/helpers/e2e/autocomplete.js +13 -13
- package/helpers/e2e/combobox.js +13 -13
- package/helpers/e2e/dropdownlist.js +13 -13
- package/helpers/e2e/index.js +3 -3
- package/helpers/e2e/listboxHelper.js +13 -13
- package/helpers/e2e/multiselect.js +13 -13
- package/license +2 -2
- package/package.json +80 -80
- package/src/auto-complete/auto-complete-model.d.ts +190 -190
- package/src/auto-complete/auto-complete.d.ts +12 -12
- package/src/auto-complete/auto-complete.js +21 -21
- package/src/combo-box/combo-box-model.d.ts +233 -233
- package/src/combo-box/combo-box.d.ts +27 -27
- package/src/combo-box/combo-box.js +29 -29
- package/src/common/virtual-scroll.js +46 -46
- package/src/drop-down-base/drop-down-base-model.d.ts +200 -200
- package/src/drop-down-base/drop-down-base.d.ts +24 -20
- package/src/drop-down-base/drop-down-base.js +60 -39
- package/src/drop-down-list/drop-down-list-model.d.ts +209 -209
- package/src/drop-down-list/drop-down-list.d.ts +5 -5
- package/src/drop-down-list/drop-down-list.js +53 -31
- package/src/drop-down-tree/drop-down-tree-model.d.ts +473 -473
- package/src/drop-down-tree/drop-down-tree.d.ts +1 -1
- package/src/drop-down-tree/drop-down-tree.js +29 -25
- package/src/list-box/list-box-model.d.ts +237 -237
- package/src/list-box/list-box.d.ts +2 -2
- package/src/list-box/list-box.js +19 -19
- package/src/mention/mention-model.d.ts +261 -261
- package/src/mention/mention.js +19 -19
- package/src/multi-select/float-label.js +1 -0
- package/src/multi-select/multi-select-model.d.ts +526 -526
- package/src/multi-select/multi-select.d.ts +2 -0
- package/src/multi-select/multi-select.js +182 -133
- package/styles/auto-complete/_all.scss +1 -1
- package/styles/auto-complete/_bds-definition.scss +2 -2
- package/styles/auto-complete/_bootstrap-dark-definition.scss +3 -3
- package/styles/auto-complete/_bootstrap-definition.scss +2 -2
- package/styles/auto-complete/_bootstrap4-definition.scss +11 -11
- package/styles/auto-complete/_bootstrap5-definition.scss +2 -2
- package/styles/auto-complete/_bootstrap5.3-definition.scss +2 -0
- package/styles/auto-complete/_fabric-dark-definition.scss +2 -2
- package/styles/auto-complete/_fabric-definition.scss +2 -2
- package/styles/auto-complete/_fluent-definition.scss +2 -2
- package/styles/auto-complete/_fluent2-definition.scss +2 -0
- package/styles/auto-complete/_fusionnew-definition.scss +2 -2
- package/styles/auto-complete/_highcontrast-definition.scss +2 -2
- package/styles/auto-complete/_highcontrast-light-definition.scss +2 -2
- package/styles/auto-complete/_material-dark-definition.scss +2 -2
- package/styles/auto-complete/_material-definition.scss +2 -2
- package/styles/auto-complete/_material3-definition.scss +2 -2
- package/styles/auto-complete/_tailwind-definition.scss +2 -2
- package/styles/auto-complete/fluent2.css +1129 -0
- package/styles/auto-complete/fluent2.scss +4 -0
- package/styles/auto-complete/material3-dark.css +1 -1
- package/styles/auto-complete/material3-dark.scss +1 -1
- package/styles/auto-complete/material3.css +1 -1
- package/styles/auto-complete/material3.scss +1 -1
- package/styles/bootstrap-dark.css +72 -300
- package/styles/bootstrap-dark.scss +28 -8
- package/styles/bootstrap.css +72 -306
- package/styles/bootstrap.scss +28 -8
- package/styles/bootstrap4.css +72 -350
- package/styles/bootstrap4.scss +28 -8
- package/styles/bootstrap5-dark.css +72 -301
- package/styles/bootstrap5-dark.scss +28 -8
- package/styles/bootstrap5.css +72 -301
- package/styles/bootstrap5.scss +28 -8
- package/styles/combo-box/_all.scss +1 -1
- package/styles/combo-box/_bds-definition.scss +2 -2
- package/styles/combo-box/_bootstrap-dark-definition.scss +2 -2
- package/styles/combo-box/_bootstrap-definition.scss +2 -2
- package/styles/combo-box/_bootstrap4-definition.scss +11 -11
- package/styles/combo-box/_bootstrap5-definition.scss +2 -2
- package/styles/combo-box/_bootstrap5.3-definition.scss +2 -0
- package/styles/combo-box/_fabric-dark-definition.scss +2 -2
- package/styles/combo-box/_fabric-definition.scss +2 -2
- package/styles/combo-box/_fluent-definition.scss +2 -2
- package/styles/combo-box/_fluent2-definition.scss +2 -0
- package/styles/combo-box/_fusionnew-definition.scss +2 -2
- package/styles/combo-box/_highcontrast-definition.scss +2 -2
- package/styles/combo-box/_highcontrast-light-definition.scss +3 -3
- package/styles/combo-box/_material-dark-definition.scss +2 -2
- package/styles/combo-box/_material-definition.scss +2 -2
- package/styles/combo-box/_material3-definition.scss +2 -2
- package/styles/combo-box/_tailwind-definition.scss +2 -2
- package/styles/combo-box/fluent2.css +1129 -0
- package/styles/combo-box/fluent2.scss +4 -0
- package/styles/combo-box/material3-dark.css +1 -1
- package/styles/combo-box/material3-dark.scss +1 -1
- package/styles/combo-box/material3.css +1 -1
- package/styles/combo-box/material3.scss +1 -1
- package/styles/drop-down-base/_all.scss +2 -2
- package/styles/drop-down-base/_bds-definition.scss +134 -134
- package/styles/drop-down-base/_bootstrap-dark-definition.scss +83 -83
- package/styles/drop-down-base/_bootstrap-definition.scss +83 -83
- package/styles/drop-down-base/_bootstrap4-definition.scss +90 -90
- package/styles/drop-down-base/_bootstrap5-definition.scss +117 -117
- package/styles/drop-down-base/_bootstrap5.3-definition.scss +117 -0
- package/styles/drop-down-base/_definition.scss +23 -23
- package/styles/drop-down-base/_fabric-dark-definition.scss +86 -86
- package/styles/drop-down-base/_fabric-definition.scss +84 -84
- package/styles/drop-down-base/_fluent-definition.scss +121 -121
- package/styles/drop-down-base/_fluent2-definition.scss +134 -0
- package/styles/drop-down-base/_fusionnew-definition.scss +117 -117
- package/styles/drop-down-base/_highcontrast-definition.scss +105 -105
- package/styles/drop-down-base/_highcontrast-light-definition.scss +105 -105
- package/styles/drop-down-base/_layout.scss +197 -187
- package/styles/drop-down-base/_material-dark-definition.scss +86 -86
- package/styles/drop-down-base/_material-definition.scss +85 -85
- package/styles/drop-down-base/_material3-definition.scss +76 -87
- package/styles/drop-down-base/_tailwind-definition.scss +129 -129
- package/styles/drop-down-base/_theme.scss +382 -391
- package/styles/drop-down-base/fluent2.css +1446 -0
- package/styles/drop-down-base/fluent2.scss +3 -0
- package/styles/drop-down-base/material3-dark.css +1 -1
- package/styles/drop-down-base/material3-dark.scss +1 -1
- package/styles/drop-down-base/material3.css +1 -1
- package/styles/drop-down-base/material3.scss +1 -1
- package/styles/drop-down-list/_all.scss +3 -3
- package/styles/drop-down-list/_bds-definition.scss +134 -134
- package/styles/drop-down-list/_bootstrap-dark-definition.scss +157 -157
- package/styles/drop-down-list/_bootstrap-definition.scss +156 -156
- package/styles/drop-down-list/_bootstrap4-definition.scss +202 -202
- package/styles/drop-down-list/_bootstrap5-definition.scss +201 -201
- package/styles/drop-down-list/_bootstrap5.3-definition.scss +201 -0
- package/styles/drop-down-list/_fabric-dark-definition.scss +128 -128
- package/styles/drop-down-list/_fabric-definition.scss +124 -124
- package/styles/drop-down-list/_fluent-definition.scss +185 -185
- package/styles/drop-down-list/_fluent2-definition.scss +134 -0
- package/styles/drop-down-list/_fusionnew-definition.scss +201 -201
- package/styles/drop-down-list/_highcontrast-definition.scss +142 -142
- package/styles/drop-down-list/_highcontrast-light-definition.scss +144 -144
- package/styles/drop-down-list/_layout.scss +317 -315
- package/styles/drop-down-list/_material-dark-definition.scss +143 -143
- package/styles/drop-down-list/_material-definition.scss +167 -167
- package/styles/drop-down-list/_material3-definition.scss +172 -180
- package/styles/drop-down-list/_tailwind-definition.scss +134 -134
- package/styles/drop-down-list/_theme.scss +10 -10
- package/styles/drop-down-list/bootstrap-dark.css +5 -0
- package/styles/drop-down-list/bootstrap.css +5 -0
- package/styles/drop-down-list/bootstrap4.css +5 -0
- package/styles/drop-down-list/bootstrap5-dark.css +5 -0
- package/styles/drop-down-list/bootstrap5.css +5 -0
- package/styles/drop-down-list/fabric-dark.css +5 -0
- package/styles/drop-down-list/fabric.css +5 -0
- package/styles/drop-down-list/fluent-dark.css +5 -0
- package/styles/drop-down-list/fluent.css +5 -0
- package/styles/drop-down-list/fluent2.css +1617 -0
- package/styles/drop-down-list/fluent2.scss +9 -0
- package/styles/drop-down-list/highcontrast-light.css +5 -0
- package/styles/drop-down-list/highcontrast.css +5 -0
- package/styles/drop-down-list/icons/_bds.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap-dark.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap4.scss +14 -14
- package/styles/drop-down-list/icons/_bootstrap5.3.scss +14 -0
- package/styles/drop-down-list/icons/_bootstrap5.scss +14 -14
- package/styles/drop-down-list/icons/_fabric-dark.scss +14 -14
- package/styles/drop-down-list/icons/_fabric.scss +14 -14
- package/styles/drop-down-list/icons/_fluent.scss +14 -14
- package/styles/drop-down-list/icons/_fluent2.scss +14 -0
- package/styles/drop-down-list/icons/_fusionnew.scss +14 -14
- package/styles/drop-down-list/icons/_highcontrast-light.scss +14 -14
- package/styles/drop-down-list/icons/_highcontrast.scss +14 -14
- package/styles/drop-down-list/icons/_material-dark.scss +14 -14
- package/styles/drop-down-list/icons/_material.scss +14 -14
- package/styles/drop-down-list/icons/_material3.scss +14 -14
- package/styles/drop-down-list/icons/_tailwind.scss +14 -14
- package/styles/drop-down-list/material-dark.css +5 -0
- package/styles/drop-down-list/material.css +5 -0
- package/styles/drop-down-list/material3-dark.css +6 -1
- package/styles/drop-down-list/material3-dark.scss +1 -1
- package/styles/drop-down-list/material3.css +6 -1
- package/styles/drop-down-list/material3.scss +1 -1
- package/styles/drop-down-list/tailwind-dark.css +5 -0
- package/styles/drop-down-list/tailwind.css +5 -0
- package/styles/drop-down-tree/_all.scss +2 -2
- package/styles/drop-down-tree/_bds-definition.scss +67 -61
- package/styles/drop-down-tree/_bootstrap-dark-definition.scss +73 -72
- package/styles/drop-down-tree/_bootstrap-definition.scss +72 -71
- package/styles/drop-down-tree/_bootstrap4-definition.scss +74 -72
- package/styles/drop-down-tree/_bootstrap5-definition.scss +66 -60
- package/styles/drop-down-tree/_bootstrap5.3-definition.scss +66 -0
- package/styles/drop-down-tree/_fabric-dark-definition.scss +73 -72
- package/styles/drop-down-tree/_fabric-definition.scss +73 -72
- package/styles/drop-down-tree/_fluent-definition.scss +71 -66
- package/styles/drop-down-tree/_fluent2-definition.scss +76 -0
- package/styles/drop-down-tree/_fusionnew-definition.scss +61 -60
- package/styles/drop-down-tree/_highcontrast-definition.scss +73 -72
- package/styles/drop-down-tree/_highcontrast-light-definition.scss +73 -72
- package/styles/drop-down-tree/_layout.scss +1389 -1423
- package/styles/drop-down-tree/_material-dark-definition.scss +74 -73
- package/styles/drop-down-tree/_material-definition.scss +74 -73
- package/styles/drop-down-tree/_material3-definition.scss +75 -76
- package/styles/drop-down-tree/_tailwind-definition.scss +67 -61
- package/styles/drop-down-tree/_theme.scss +130 -132
- package/styles/drop-down-tree/bootstrap-dark.css +20 -21
- package/styles/drop-down-tree/bootstrap.css +20 -21
- package/styles/drop-down-tree/bootstrap4.css +21 -22
- package/styles/drop-down-tree/bootstrap5-dark.css +20 -19
- package/styles/drop-down-tree/bootstrap5.css +20 -19
- package/styles/drop-down-tree/fabric-dark.css +20 -21
- package/styles/drop-down-tree/fabric.css +20 -21
- package/styles/drop-down-tree/fluent-dark.css +28 -27
- package/styles/drop-down-tree/fluent.css +28 -27
- package/styles/drop-down-tree/fluent2.css +1671 -0
- package/styles/drop-down-tree/fluent2.scss +9 -0
- package/styles/drop-down-tree/highcontrast-light.css +20 -21
- package/styles/drop-down-tree/highcontrast.css +20 -15
- package/styles/drop-down-tree/icons/_bds.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap4.scss +11 -11
- package/styles/drop-down-tree/icons/_bootstrap5.3.scss +11 -0
- package/styles/drop-down-tree/icons/_bootstrap5.scss +11 -11
- package/styles/drop-down-tree/icons/_fabric-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_fabric.scss +11 -11
- package/styles/drop-down-tree/icons/_fluent.scss +11 -11
- package/styles/drop-down-tree/icons/_fluent2.scss +14 -0
- package/styles/drop-down-tree/icons/_fusionnew.scss +11 -11
- package/styles/drop-down-tree/icons/_highcontrast-light.scss +11 -11
- package/styles/drop-down-tree/icons/_highcontrast.scss +11 -11
- package/styles/drop-down-tree/icons/_material-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_material.scss +11 -11
- package/styles/drop-down-tree/icons/_material3.scss +11 -11
- package/styles/drop-down-tree/icons/_tailwind-dark.scss +11 -11
- package/styles/drop-down-tree/icons/_tailwind.scss +11 -11
- package/styles/drop-down-tree/material-dark.css +28 -34
- package/styles/drop-down-tree/material.css +31 -40
- package/styles/drop-down-tree/material3-dark.css +17 -21
- package/styles/drop-down-tree/material3-dark.scss +1 -1
- package/styles/drop-down-tree/material3.css +17 -21
- package/styles/drop-down-tree/material3.scss +1 -1
- package/styles/drop-down-tree/tailwind-dark.css +29 -20
- package/styles/drop-down-tree/tailwind.css +29 -20
- package/styles/fabric-dark.css +72 -300
- package/styles/fabric-dark.scss +28 -8
- package/styles/fabric.css +72 -306
- package/styles/fabric.scss +28 -8
- package/styles/fluent-dark.css +80 -315
- package/styles/fluent-dark.scss +28 -8
- package/styles/fluent.css +80 -315
- package/styles/fluent.scss +28 -8
- package/styles/fluent2.css +4541 -0
- package/styles/fluent2.scss +28 -0
- package/styles/highcontrast-light.css +72 -300
- package/styles/highcontrast-light.scss +28 -8
- package/styles/highcontrast.css +72 -300
- package/styles/highcontrast.scss +28 -8
- package/styles/list-box/_all.scss +2 -2
- package/styles/list-box/_bds-definition.scss +136 -136
- package/styles/list-box/_bigger.scss +164 -0
- package/styles/list-box/_bootstrap-dark-definition.scss +124 -126
- package/styles/list-box/_bootstrap-definition.scss +119 -119
- package/styles/list-box/_bootstrap4-definition.scss +124 -124
- package/styles/list-box/_bootstrap5-definition.scss +121 -120
- package/styles/list-box/_bootstrap5.3-definition.scss +121 -0
- package/styles/list-box/_fabric-dark-definition.scss +124 -126
- package/styles/list-box/_fabric-definition.scss +119 -119
- package/styles/list-box/_fluent-definition.scss +120 -120
- package/styles/list-box/_fluent2-definition.scss +119 -0
- package/styles/list-box/_fusionnew-definition.scss +111 -111
- package/styles/list-box/_highcontrast-definition.scss +119 -119
- package/styles/list-box/_highcontrast-light-definition.scss +124 -126
- package/styles/list-box/_layout.scss +455 -546
- package/styles/list-box/_material-dark-definition.scss +124 -126
- package/styles/list-box/_material-definition.scss +119 -119
- package/styles/list-box/_material3-definition.scss +119 -119
- package/styles/list-box/_tailwind-definition.scss +119 -119
- package/styles/list-box/_theme.scss +314 -382
- package/styles/list-box/bootstrap-dark.css +43 -215
- package/styles/list-box/bootstrap.css +43 -221
- package/styles/list-box/bootstrap4.css +42 -264
- package/styles/list-box/bootstrap5-dark.css +43 -215
- package/styles/list-box/bootstrap5.css +43 -215
- package/styles/list-box/fabric-dark.css +43 -215
- package/styles/list-box/fabric.css +43 -221
- package/styles/list-box/fluent-dark.css +43 -221
- package/styles/list-box/fluent.css +43 -221
- package/styles/list-box/fluent2.css +1896 -0
- package/styles/list-box/fluent2.scss +5 -0
- package/styles/list-box/highcontrast-light.css +43 -215
- package/styles/list-box/highcontrast.css +43 -221
- package/styles/list-box/icons/_bds.scss +25 -25
- package/styles/list-box/icons/_bootstrap-dark.scss +25 -25
- package/styles/list-box/icons/_bootstrap.scss +25 -25
- package/styles/list-box/icons/_bootstrap4.scss +25 -25
- package/styles/list-box/icons/_bootstrap5.3.scss +25 -0
- package/styles/list-box/icons/_bootstrap5.scss +25 -25
- package/styles/list-box/icons/_fabric-dark.scss +25 -25
- package/styles/list-box/icons/_fabric.scss +25 -25
- package/styles/list-box/icons/_fluent.scss +25 -25
- package/styles/list-box/icons/_fluent2.scss +25 -0
- package/styles/list-box/icons/_fusionnew.scss +25 -25
- package/styles/list-box/icons/_highcontrast-light.scss +25 -25
- package/styles/list-box/icons/_highcontrast.scss +25 -25
- package/styles/list-box/icons/_material-dark.scss +25 -25
- package/styles/list-box/icons/_material.scss +25 -25
- package/styles/list-box/icons/_material3.scss +25 -25
- package/styles/list-box/icons/_tailwind-dark.scss +25 -25
- package/styles/list-box/icons/_tailwind.scss +25 -25
- package/styles/list-box/material-dark.css +43 -215
- package/styles/list-box/material.css +43 -221
- package/styles/list-box/material3-dark.css +44 -216
- package/styles/list-box/material3-dark.scss +1 -1
- package/styles/list-box/material3.css +44 -216
- package/styles/list-box/material3.scss +1 -1
- package/styles/list-box/tailwind-dark.css +45 -233
- package/styles/list-box/tailwind.css +45 -233
- package/styles/material-dark.css +80 -325
- package/styles/material-dark.scss +28 -8
- package/styles/material.css +84 -354
- package/styles/material.scss +28 -8
- package/styles/material3-dark.css +79 -337
- package/styles/material3-dark.scss +28 -8
- package/styles/material3.css +79 -337
- package/styles/material3.scss +28 -8
- package/styles/mention/_all.scss +1 -1
- package/styles/mention/_bds-definition.scss +1 -1
- package/styles/mention/_bootstrap-dark-definition.scss +3 -3
- package/styles/mention/_bootstrap-definition.scss +3 -3
- package/styles/mention/_bootstrap4-definition.scss +3 -3
- package/styles/mention/_bootstrap5-definition.scss +1 -1
- package/styles/mention/_bootstrap5.3-definition.scss +1 -0
- package/styles/mention/_fabric-dark-definition.scss +2 -2
- package/styles/mention/_fabric-definition.scss +3 -3
- package/styles/mention/_fluent-definition.scss +1 -1
- package/styles/mention/_fluent2-definition.scss +1 -0
- package/styles/mention/_fusionnew-definition.scss +1 -1
- package/styles/mention/_highcontrast-definition.scss +3 -3
- package/styles/mention/_highcontrast-light-definition.scss +3 -3
- package/styles/mention/_layout.scss +6 -6
- package/styles/mention/_material-dark-definition.scss +3 -3
- package/styles/mention/_material-definition.scss +3 -3
- package/styles/mention/_material3-definition.scss +1 -1
- package/styles/mention/_tailwind-definition.scss +1 -1
- package/styles/mention/fluent2.css +1106 -0
- package/styles/mention/fluent2.scss +6 -0
- package/styles/mention/material3-dark.css +1 -1
- package/styles/mention/material3-dark.scss +1 -1
- package/styles/mention/material3.css +1 -1
- package/styles/mention/material3.scss +1 -1
- package/styles/multi-select/_all.scss +2 -2
- package/styles/multi-select/_bds-definition.scss +235 -235
- package/styles/multi-select/_bootstrap-dark-definition.scss +207 -207
- package/styles/multi-select/_bootstrap-definition.scss +196 -196
- package/styles/multi-select/_bootstrap4-definition.scss +278 -278
- package/styles/multi-select/_bootstrap5-definition.scss +230 -230
- package/styles/multi-select/_bootstrap5.3-definition.scss +230 -0
- package/styles/multi-select/_fabric-dark-definition.scss +192 -192
- package/styles/multi-select/_fabric-definition.scss +183 -183
- package/styles/multi-select/_fluent-definition.scss +246 -246
- package/styles/multi-select/_fluent2-definition.scss +237 -0
- package/styles/multi-select/_fusionnew-definition.scss +227 -227
- package/styles/multi-select/_highcontrast-definition.scss +303 -303
- package/styles/multi-select/_highcontrast-light-definition.scss +297 -297
- package/styles/multi-select/_layout.scss +2200 -2206
- package/styles/multi-select/_material-dark-definition.scss +241 -241
- package/styles/multi-select/_material-definition.scss +234 -234
- package/styles/multi-select/_material3-definition.scss +231 -246
- package/styles/multi-select/_tailwind-definition.scss +235 -235
- package/styles/multi-select/_theme.scss +585 -586
- package/styles/multi-select/bootstrap-dark.css +4 -10
- package/styles/multi-select/bootstrap.css +4 -10
- package/styles/multi-select/bootstrap4.css +4 -10
- package/styles/multi-select/bootstrap5-dark.css +4 -11
- package/styles/multi-select/bootstrap5.css +4 -11
- package/styles/multi-select/fabric-dark.css +4 -10
- package/styles/multi-select/fabric.css +4 -10
- package/styles/multi-select/fluent-dark.css +4 -11
- package/styles/multi-select/fluent.css +4 -11
- package/styles/multi-select/fluent2.css +2590 -0
- package/styles/multi-select/fluent2.scss +9 -0
- package/styles/multi-select/highcontrast-light.css +4 -10
- package/styles/multi-select/highcontrast.css +4 -10
- package/styles/multi-select/icons/_bds.scss +26 -26
- package/styles/multi-select/icons/_bootstrap-dark.scss +26 -26
- package/styles/multi-select/icons/_bootstrap.scss +26 -26
- package/styles/multi-select/icons/_bootstrap4.scss +37 -37
- package/styles/multi-select/icons/_bootstrap5.3.scss +26 -0
- package/styles/multi-select/icons/_bootstrap5.scss +26 -26
- package/styles/multi-select/icons/_fabric-dark.scss +26 -26
- package/styles/multi-select/icons/_fabric.scss +26 -26
- package/styles/multi-select/icons/_fluent.scss +55 -55
- package/styles/multi-select/icons/_fluent2.scss +692 -0
- package/styles/multi-select/icons/_fusionnew.scss +26 -26
- package/styles/multi-select/icons/_highcontrast-light.scss +26 -26
- package/styles/multi-select/icons/_highcontrast.scss +26 -26
- package/styles/multi-select/icons/_material-dark.scss +693 -693
- package/styles/multi-select/icons/_material.scss +693 -693
- package/styles/multi-select/icons/_material3.scss +695 -692
- package/styles/multi-select/icons/_tailwind.scss +26 -26
- package/styles/multi-select/material-dark.css +4 -10
- package/styles/multi-select/material.css +5 -11
- package/styles/multi-select/material3-dark.css +15 -18
- package/styles/multi-select/material3-dark.scss +1 -1
- package/styles/multi-select/material3.css +15 -18
- package/styles/multi-select/material3.scss +1 -1
- package/styles/multi-select/tailwind-dark.css +4 -10
- package/styles/multi-select/tailwind.css +4 -10
- package/styles/tailwind-dark.css +83 -319
- package/styles/tailwind-dark.scss +28 -8
- package/styles/tailwind.css +83 -319
- package/styles/tailwind.scss +28 -8
- package/.eslintrc.json +0 -260
- package/dist/ej2-dropdowns.min.js +0 -10
- package/dist/global/ej2-dropdowns.min.js +0 -11
- package/dist/global/ej2-dropdowns.min.js.map +0 -1
- package/dist/global/index.d.ts +0 -14
- package/tslint.json +0 -111
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-dropdowns.min.js","sources":["../../src/common/incremental-search.js","../../src/common/highlight-search.js","../../src/multi-select/float-label.js","../../src/common/virtual-scroll.js","../../src/drop-down-base/drop-down-base.js","../../src/drop-down-list/drop-down-list.js","../../src/drop-down-tree/drop-down-tree.js","../../src/combo-box/combo-box.js","../../src/auto-complete/auto-complete.js","../../src/multi-select/multi-select.js","../../src/multi-select/checkbox-selection.js","../../src/list-box/list-box.js","../../src/mention/mention.js","../../src/global.js"],"sourcesContent":["/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<span class=\"e-highlight\">$1</span>');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '<input placeholder=\"' + placeholder + '\"/>';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { EventHandler, Browser, select, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var cHeight = _this.parent.popupContentElement.clientHeight;\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - (_this.parent.listItemHeight * _this.parent.virtualItemCount / 2) <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n }, axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function (e) {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) { virtualItemStartIndex = 0; }\n if (virtualItemEndIndex === void 0) { virtualItemEndIndex = 0; }\n if (isQueryGenerated === void 0) { isQueryGenerated = false; }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n }\n else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n }\n else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = (totalData == this.parent.totalItemCount && this.parent.queryString != this.parent.typedString) ? true : this.parent.isCustomFilter;\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\n this.parent.isCustomFilter = tempCustomFilter;\n };\n VirtualScroll.prototype.removeSkipAndTakeEvents = function (query) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder) {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n isListUpdated = false;\n }\n else {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n isListUpdated = false;\n }\n else if (this.parent.viewPortInfo.startIndex != 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex != 0 && this.parent.viewPortInfo.startIndex - this.parent.value.length != this.parent.itemCount && (this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length)) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n }\n else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0 ? this.parent.viewPortInfo.startIndex - this.parent.value.length : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value && value != null && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex == this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.parent.value === null || (this.parent.value && this.parent.value.length === 0))) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length != this.parent.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.hideSelectedItem) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex == this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n }\n else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n }\n else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex == 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex == this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n var ulElement = this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n }\n this.parent.getSkeletonCount();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.parent.GetVirtualTrackHeight();\n }\n else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {\n var virualElement = this.parent.createElement('div', {\n id: this.parent.element.id + '_popup', className: 'e-virtual-ddl', styles: this.parent.GetVirtualTrackHeight()\n });\n this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.parent.UpdateSkeleton();\n this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.parent.getTransformValues();\n }\n if (this.parent.fields.groupBy) {\n this.parent.scrollStop();\n }\n if (this.parent.keyCode == 40 && this.parent.isScrollChanged && this.parent.hideSelectedItem && !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n }\n else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised && !((this.parent.totalItemCount == queryStartIndex) && (this.parent.totalItemCount == queryEndIndex))) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' && this.parent.hideSelectedItem && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' && this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) || (this.parent.dataSource instanceof DataManager && !this.parent.isRequesting)) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = (!(this.parent.isTyped || (this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString != this.parent.typedString) || (!isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '') && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null)) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n }\n else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount != 0 && this.parent.totalItemCount < (this.parent.itemCount * 2) ? 0 : this.parent.skeletonCount;\n }\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null && (!(this.parent.dataSource instanceof DataManager) || (this.parent.dataSource instanceof DataManager && !this.parent.isRequesting))) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n }\n else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n var virtualListCount = this.parent.list.querySelectorAll('.e-virtual-list').length;\n var listElement = this.parent.list.querySelector('.' + 'e-list-item');\n var translateY = scrollArgs.offset.top - (listElement.offsetHeight * virtualListCount);\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style.transform = \"translate(0px,\" + translateY + \"px)\";\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement.getBoundingClientRect().height;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round((pageSizeBy4));\n if (isNullOrUndefined(infoType.startIndex) || (exactEndIndex >\n (infoType.startIndex + Math.round((this.parent.virtualItemCount / 2 + pageSizeBy4)))\n && infoType.endIndex !== totalItemCount)) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? (Math.ceil(exactEndIndex) - this.parent.virtualItemCount)\n : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount ? (infoType.endIndex - this.parent.virtualItemCount > 0 ? infoType.endIndex - this.parent.virtualItemCount : 0) : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n }\n else if (infoType.direction === 'up') {\n if (infoType.startIndex && infoType.endIndex) {\n var loadAtIndex = Math.round(((infoType.startIndex * rowHeight) + (pageSizeBy4 * rowHeight)) / rowHeight);\n if (exactTopIndex < loadAtIndex) {\n var idxAddedToExactTop = (pageSizeBy4) > infoViewIndices ? pageSizeBy4 :\n (infoViewIndices + infoViewIndices / 4);\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = (eIndex < totalItemCount || this.component == \"multiselect\") ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n }\n else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n var infoview = _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex != pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = (_this.parent.list.querySelector('.e-virtual-ddl-content'));\n virtualPoup.style.transform = \"translate(0px,\" + top + \"px)\";\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count != 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) || (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = e.count;\n _this.totalItemCount = e.count;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.setListData(dataSource, fields, query, event);\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated)) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled && !_this.virtualSelectAll ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = this.list.parentElement.offsetTop + this.list.offsetTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n if (listItems && listItems.children) {\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 }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData, oldProp);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ? this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index);\n isListboxEmpty = true;\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * <input type=\"text\" tabindex=\"1\" id=\"list\"> </input>\n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isTouched = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] && this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 && this.fields.groupBy ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 : this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() : this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ? (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" && !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '<option selected>' + this.text + '</option>';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ? this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex != 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < filterQuery.queries.length; queryElements_1++) {\n if (filterQuery.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_1].e.nos;\n }\n if (filterQuery.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements_1].e.nos ? filterQuery.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < this.query.queries.length; queryElements_2++) {\n if (this.query.queries[queryElements_2].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_2].e.nos ? this.query.queries[queryElements_2].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_3 = 0; queryElements_3 < filterQuery.queries.length; queryElements_3++) {\n if (filterQuery.queries[queryElements_3].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n continue;\n }\n if (filterQuery.queries[queryElements_3].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements_3].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query.clone();\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = ((!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') || this.getInitialData) ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n if (!this.preventPopupOpen && this.getModuleName() === 'combobox') {\n this.beforePopupOpen = true;\n this.preventPopupOpen = true;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ? this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ? formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id);\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\n };\n ;\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (width.indexOf('px') > -1) && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.inputElement.setAttribute('aria-controls', this.element.id + '_popups');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n this.setProperties({ 'text': dataItem.text, 'value': value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex)) {\n newProp.index = this.preselectedIndex;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.filterInput = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * <input type=\"text\" id=\"tree\"></input>\n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n _this.isFromFilterChange = false;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n }\n else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n }\n else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNOU(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node, isChild, isChildFiltering)) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n }\n else {\n filteredItems.child = null;\n filteredItems = (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n var matchedData = [];\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '', 'aria-label': this.getModuleName() }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT, 'aria-label': this.getModuleName() }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly') {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) { return !_this.portals.includes(item); }));\n }\n /* eslint-enable */\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = void 0;\n if (_this.value != null && _this.text != null) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement = _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[0] + '\"]');\n focusedElement.setAttribute('tabindex', '0');\n }\n else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li:not(.e-disable):not(.e-prevent)');\n if (oldFocussedNode && oldFocussedNode != focusedElement) {\n oldFocussedNode.setAttribute('tabindex', '-1');\n removeClass([oldFocussedNode], 'e-node-focus');\n }\n }\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n if (_this.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.reactCallBack = function () {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && ((!isNOU(this.inputWrapper) && this.inputWrapper.contains(target)) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource)) {\n this.fields.dataSource = [];\n }\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) || !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 || (!isNOU(args.data[0]) && args.data[0].isChecked === 'false'))) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && (args.isInteracted || this.isCheckAllCalled || (!isNOU(args.data[0]) && args.data[0].isChecked === 'true'))) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function (args) {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n /* eslint-enable */\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || (this.value && this.value.length === 0)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: this.isFromFilterChange && newValues && newValues.length === 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '<option selected value =\"' + this.value[i] + '\">' +\n this.selectedText[this.selectedText.length - 1] + '</option>';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n var e = void 0;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (this.value === [] && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({ value: [] }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property('${value.length} item(s) selected')\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-list/drop-down-list-model.d.ts'/>\nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n }\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) || (this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) || (this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n var newValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) || (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) || (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) || (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) || (this.allowObjectBinding && ((previousValue == null && this.value !== null) || (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * <input id=\"list\" type=\"text\"/>\n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue((this.fields.value) ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { isCollide, Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var multiselectObj = new Multiselect();\n * multiselectObj.appendTo(\"#list\");\n * </script>\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.preventSetCurrentData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (!_this.enableVirtualization) {\n _this.loadTemplate();\n }\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n this.resetList(this.selectedListData, this.fields, query);\n }\n else {\n this.resetList(this.dataSource, this.fields, query);\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\n }\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n this.isKeyBoardAction = false;\n this.scrollBottom(focusedItem);\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n if (this.enableVirtualization) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ? this.getDataByValue(value) : this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n if (this.enableVirtualization && valuecheck) {\n if (isCheckbox) {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'equal', (value));\n }\n else {\n predicate = predicate.or(field, 'equal', (value));\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'notequal', (value));\n }\n else {\n predicate = predicate.and(field, 'notequal', (value));\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' && this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll) && ((!this.enableVirtualization) || (this.enableVirtualization && !this.virtualSelectAll))) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey && this.inputElement) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization && this.targetElement() !== null && this.targetElement().trim() !== '')) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else if ((this.enableVirtualization && this.targetElement() !== \"\") || !this.enableVirtualization) {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.condition == 'or') || (filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n var queryTakeValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if ((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number' && this.fields.value !== this.fields.text) {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ? Object.keys(this.firstItem) : Object.keys(dataItem_1);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.dataSource instanceof DataManager ? JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n var tempCount = this.totalItemCount;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ? tempCount : this.totalItemCount;\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n if (!this.enableVirtualization) {\n this.resetList(this.listData, field, query);\n }\n }\n else if (!this.allowFiltering && this.list) {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n }\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n this.keyboardEvent = null;\n this.isKeyBoardAction = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps] : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex == 0) {\n this.isKeyBoardAction = true;\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n this.previousFocusItem = previousItem;\n }\n else {\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.isKeyBoardAction = true;\n this.addListFocus(previousItem);\n this.previousFocusItem = previousItem;\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) || (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n this.pageUpSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.isKeyBoardAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.isKeyBoardAction = true;\n this.arrowUp(e);\n break;\n case 40:\n this.isKeyBoardAction = true;\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n this.isKeyBoardAction = true;\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.isKeyBoardAction = true;\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.isKeyBoardAction = true;\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) || (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyCode != 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode == 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyCode != 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTop -= selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode == 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData && this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ? this.getDataByValue(selectedElem.getAttribute('data-value')) : selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n this.addListFocus(elements[this.skeletonCount]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n }\n };\n MultiSelect.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(customVal) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var element_1 = this.findListElement(this.list, 'li', 'data-value', currentValue);\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 _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n if (_this.enableVirtualization && isClearAll) {\n removeVal = [];\n }\n removeVal.splice(index, 1);\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.selectedListData.splice(index, 1);\n }\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (this.enableVirtualization && isClearAll) {\n var childElements = this.chipCollectionWrapper.querySelectorAll('.e-chips');\n }\n else {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) && item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(value, this.value)) || (!this.allowObjectBinding && this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var temp = void 0;\n var currentText = [];\n var value_1 = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value_1);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if (_this.enableVirtualization) {\n if (isNullOrUndefined(_this.selectedListData)) {\n _this.selectedListData = [(_this.getDataByValue(value))];\n }\n else {\n if (Array.isArray(_this.selectedListData)) {\n _this.selectedListData.push((_this.getDataByValue(value)));\n }\n else {\n _this.selectedListData = [_this.selectedListData, (_this.getDataByValue(value))];\n }\n }\n }\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight;\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemsCount();\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] && _this.getItems()[1].offsetHeight !== 0) {\n _this.listItemHeight = _this.getItems()[1].offsetHeight;\n if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n }\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.checkCollision(this.popupWrapper);\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.checkCollision = function (popupEle) {\n if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering)) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.customFilterQuery = query;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if ((!(this.viewPortInfo.startIndex >= activeElement.index)) || (!(activeElement.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0 ? activeElement.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index_1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (this.enableVirtualization) {\n listValue = this.findListElement((!isNullOrUndefined(this.list) ? this.list : this.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this.allowCustomValue && !this.enableVirtualization) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n if (this.enableVirtualization) {\n if (delim) {\n data = this.delimiterWrapper && this.delimiterWrapper.innerHTML == \"\" ? data : this.delimiterWrapper.innerHTML;\n }\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n break;\n }\n else {\n temp = this.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if (getValue((this.fields.value ? this.fields.value : 'value'), listItems[i]) === value) {\n text = getValue(this.fields.text, listItems[i]);\n if (this.enableVirtualization) {\n if (isNullOrUndefined(this.selectedListData)) {\n this.selectedListData = [listItems[i]];\n }\n else {\n if (Array.isArray(this.selectedListData)) {\n this.selectedListData.push((listItems[i]));\n }\n else {\n this.selectedListData = [this.selectedListData, (listItems[i])];\n }\n }\n }\n break;\n }\n }\n }\n if ((isNullOrUndefined(text) && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData))) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) || (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if ((!this.enableVirtualization && value && this.allowCustomValue) || ((this.enableVirtualization && value && this.allowCustomValue) && ((!(this.dataSource instanceof DataManager)) || (this.dataSource instanceof DataManager && isInitialVirtualData)))) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n if (!this.enableVirtualization) {\n this.addItem(newValue, indexItem);\n }\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n var currentText = [];\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && ((!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) || (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.allowObjectBinding ? this.getDataByValue(customVal) : this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || ((!this.allowObjectBinding && this.value.indexOf(value) === -1) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1))) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value) && (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\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) || (this.enableVirtualization && !state)) {\n var index_2 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n if (this.enableVirtualization) {\n if (state) {\n this.virtualSelectAll = true;\n this.resetList(this.dataSource, this.fields, new Query());\n if (this.virtualSelectAllData instanceof Array) {\n for (var i = 0; i < this.virtualSelectAllData.length; i++) {\n if (li[this.skeletonCount + i]) {\n var value_2 = this.allowObjectBinding ? this.getDataByValue(li[this.skeletonCount + i].getAttribute('data-value')) : this.getFormattedValue(li[this.skeletonCount + i].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value_2) === 1) || (this.allowObjectBinding && this.indexOfObjectInArray(value_2, this.value) === 1))) {\n continue;\n }\n this.updateListSelection(li[this.skeletonCount + i], event, length - i);\n }\n else {\n if (this.fields) {\n var value_3 = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value_3 = this.allowObjectBinding ? this.getDataByValue(value_3) : value_3;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value_3) === 1) || (this.allowObjectBinding && this.indexOfObjectInArray(value_3, this.value) === 1))) {\n continue;\n }\n if (this.value && value_3 != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value_3) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_3, this.value)))) {\n this.dispatchSelect(value_3, event, null, false, length);\n }\n }\n }\n }\n if (this.virtualSelectAllData && this.value.length != this.virtualSelectAllData.length && this.virtualItemStartIndex != 0) {\n if (this.virtualItemStartIndex > this.itemCount) {\n for (var i = 0; i < this.itemCount; i++) {\n if (this.fields) {\n var value_4 = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value_4 = this.allowObjectBinding ? this.getDataByValue(value_4) : value_4;\n if (this.value && value_4 != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value_4) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_4, this.value)))) {\n this.setProperties({ value: [].concat([], this.value, this.allowObjectBinding ? [this.virtualSelectAllData[i]] : [value_4]) }, true);\n }\n }\n }\n }\n }\n else {\n for (var i = 0; i < this.virtualItemStartIndex; i++) {\n if (this.fields) {\n var value = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.setProperties({ value: [].concat([], this.value, this.allowObjectBinding ? [this.virtualSelectAllData[i]] : [value]) }, true);\n }\n }\n }\n }\n }\n }\n else {\n while (index_2 < this.value.length && index_2 <= 50 && index_2 < count_1 && this.value.length > 0) {\n this.removeValue(this.value[index_2], event, this.value.length - index_2);\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < _this.value.length && index_2 < count_1 && _this.value.length > 0) {\n _this.removeValue(value[index_2], event, _this.value.length - index_2);\n index_2++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n this.value = [];\n this.virtualSelectAll = false;\n if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n this.notify(\"setCurrentViewDataAsync\", {\n component: this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.getTransformValues();\n }\n }\n else {\n while (index_2 < length && index_2 <= 50 && index_2 < count_1) {\n this.isSelectAllTarget = (length === index_2 + 1);\n this.updateListSelection(li[index_2], event, length - index_2);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < length && index_2 < count_1) {\n _this.isSelectAllTarget = (length === index_2 + 1);\n _this.updateListSelection(li[index_2], event, length - index_2);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n if (_this.popupWrapper && li[index_2 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_2 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i_1 = 0; i_1 < li.length && i_1 < count_1; i_1++) {\n this.removeHover();\n var customVal = li[i_1].getAttribute('data-value');\n var value_5 = this.getFormattedValue(customVal);\n value_5 = this.allowObjectBinding ? this.getDataByValue(value_5) : value_5;\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_1] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value_5) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_5, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value_5]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i_1], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value_5, event, false, li[i_1], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i_1]);\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-describedby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n this.virtualSelectAll = false;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n if (this.hideSelectedItem) {\n this.totalItemCount = dataSourceCount != 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n for (var j = 0; j < this.value.length; j++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[j]) : this.value[j];\n var customValue = getValue((this.fields.value) ? this.fields.value : '', this.virtualCustomSelectData[i]);\n if (value === customValue) {\n this.totalItemCount += 1;\n }\n }\n }\n }\n }\n else {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n this.totalItemCount += this.virtualCustomSelectData.length;\n }\n }\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ? this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null && !this.enableVirtualization) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n if (!this.enableVirtualization || (this.enableVirtualization && (!(this.dataSource instanceof DataManager)))) {\n this.initialValueUpdate();\n }\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n this.customFilterQuery = null;\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n var typedValue = _this.mode == 'CheckBox' ? _this.targetElement() : null;\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 && _this.enableSelectionOrder) {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ? _this.viewPortInfo.endIndex : _this.itemCount;\n _this.virtualListInfo = _this.viewPortInfo;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = 0;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n if (_this.remoteDataCount >= 0) {\n _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n }\n else {\n _this.resetList(_this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) && (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n _this.updateInitialData();\n _this.checkAndResetCache();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 && _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' || _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify(\"setCurrentViewDataAsync\", {\n component: _this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null && _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n _this.preventSetCurrentData = true;\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(value);\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.length > 0) {\n listItems_2 = e.result;\n _this.initStatus = false;\n _this.initialValueUpdate(listItems_2, true);\n _this.initialUpdate();\n _this.initStatus = true;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n if (!_this.enableVirtualization || (_this.enableVirtualization && (!(_this.dataSource instanceof DataManager)))) {\n _this.initialValueUpdate(listItems_2);\n }\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = this.getItems();\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || (e.currentTarget.classList.value === this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n }\n else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n, setValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <select id=\"listbox\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n if (this.isAngular && this.allowFiltering) {\n var originalElement = this.element;\n var clonedElement = originalElement.cloneNode(true);\n originalElement.parentNode.replaceChild(clonedElement, originalElement);\n this.element = clonedElement;\n setValue('ej2_instances', [this], this.element);\n }\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n this.inputFormName = this.element.getAttribute('name');\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index === null ? this.jsonData.length : index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n if (this.inputFormName) {\n input.setAttribute('name', this.inputFormName);\n }\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n var filterElem;\n var txtLength;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')\n || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n if (scrollParent) {\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, true); }, 70);\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollParent, scrollHeight, false); }, 70);\n }\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n }\n else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (args.items !== items) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value, index) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'role': 'textbox'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number);\n }\n var _loop_3 = function (i) {\n if (fListBox.ulElement.childNodes[i].classList.contains('e-disabled')) {\n flistboxarray = flistboxarray.filter(function (item) { return item !== i; });\n tempLiColl.push(fListBox.ulElement.childNodes[i]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n };\n for (var i = 0; i < fListBox.ulElement.childElementCount; i++) {\n _loop_3(i);\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < flistboxarray.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n }\n else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.liCollections);\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData.filter(function (data) { return (data !== undefined); });\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = tempData;\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && (!this.allowFiltering ||\n (this.allowFiltering && e.target !== this.filterInput))) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText, canFocus) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n if (canFocus === void 0) { canFocus = true; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (canFocus) {\n li.focus();\n }\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '<option selected>' + this.value[i] + '</option>';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('None')\n ], ListBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement != this.inputElement && isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange == lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0) && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) || (this.liCollections && this.liCollections.length > 0))) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement && _this.inputElement.parentElement.parentElement &&\n _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {\n if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString()));\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement(\"span\");\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n }\n else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === \"down\" || e.action === \"up\")) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix;\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() && this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', { detail: { click: true } });\n this.inputElement.dispatchEvent(event_1);\n }\n ;\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '<span contenteditable=\"true\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\nexport { Mention };\n","import * as index from './index';\nindex.DropDownList.Inject(index.VirtualScroll);\nindex.ComboBox.Inject(index.VirtualScroll);\nindex.AutoComplete.Inject(index.VirtualScroll);\nindex.MultiSelect.Inject(index.CheckBoxSelection, index.VirtualScroll);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryStringUpdated","currentValue","isVirtual","refresh","queryString","prevString","tempQueryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","listItems","strLength","length","item","i","matches","innerText","substr","push","indexUpdated","i_1","textContent","classList","contains","activeClass","Search","inputVal","searchType","dataSource","fields","type","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","text","checkField_1","fieldValue_1","split","filter","data","Array","prototype","slice","call","forEach","value","isHeader","toString","indexOf","getAttribute","replace","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","match","charCodeAt","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__assign","Object","assign","t","s","n","arguments","p","hasOwnProperty","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","__generator","body","verb","v","op","f","TypeError","_","y","ops","pop","trys","g","sent","throw","return","Symbol","iterator","VirtualScroll","parent","_this","sentinelInfo","up","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","down","popupContentElement","clientHeight","bottom","removeEventListener","addEventListener","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","getBoundingClientRect","EventHandler","popupScrollHandler","touchModule","Touch","scroll","bind","virtualScrollHandler","getModuleName","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","skip","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","newQuery","removeSkipAndTakeEvents","clone","tempCustomFilter","isCustomFilter","totalData","DataManager","json","totalItemCount","typedString","resetList","queries","event","fn","currentData","isResetListCalled","isListUpdated","viewPortInfo","mode","isArray","enableSelectionOrder","startIndex","updateVirtualReOrderList","itemCount","oldUlElement","list","removeChild","getForQuery","take","appendUncheckList","setCurrentView","reOrderList","skipvalue","totalItemsCount","alreadyAddedData","hideSelectedItem","getValue","allowCustomValue","virtualCustomData","splice","virtualCustomSelectData","concat","renderItems","updatevirtualizationList","getSkeletonCount","virtualTrackElement","getElementsByClassName","style","GetVirtualTrackHeight","skeletonCount","popupWrapper","virualElement","styles","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","isScrollChanged","currentFocuedListElement","currentSelectElem","getElementByValue","addListFocus","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","isRequesting","isOpenPopup","selectedValueInfo","Query","virtualScrollRefreshAsync","_a","isTyped","filterInput","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","customFilterQuery","isVirtualTrackHeight","preventSetCurrentData","sentinel","pStartIndex","previousStartIndex","getInfoFromView","direction","offset","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","virtualListCount","listElement","translateY","offsetHeight","transform","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","select","updateSelectionList","getItems","previousInfo","isscrollAction","infoType","offsets","previousEndIndex","vHeight","height","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","Math","round","floor","eIndex","ceil","idxAddedToExactTop","scrollPreStartIndex","delay","Browser","name","prevTop","debounced100","debounce","debounced50","target","scrollTop","left","scrollLeft","current","pstartIndex","scrollOffsetargs","debounceFunction","focusElement","activeElement","destroy","__extends","extendStatics","d","b","setPrototypeOf","__proto__","__","constructor","create","__decorate","decorators","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","virtualList","DropDownBase","options","preventChange","isAngular","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualListHeight","virtualSelectAll","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","getInitialData","preventPopupOpen","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","ignoreAccent","checkValueCase","isTextByValue","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","ulElement","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","compile","templateName","noDataElement","isStringTemplate","nodeName","liElem","setAttribute","HTMLElement","Text","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","checkAndResetCache","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","getFilteringSkeletonCount","currentSkeletonCount","skeletonUpdated","abs","retainSkeleton","listContainerHeight","parseInt","actualCount","heightDimension","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","liElement","itemTemplate","skeleton","Skeleton","shape","width","cssClass","appendTo","firstChild","insertBefore","getTextByValue","properties","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","extend","htmlAttributes","option","getJSONfromOption","optionGroup","child","updateFields","iconCss","field","options_1","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","eventArgs","cancel","trigger","showSpinner","isWhereExist_1","emptyDataRequest","executeQuery","getQuery","isReOrder","queryElements","count","nos","condition","operator","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","notify","module","catch","onActionFailure","hideSpinner","virtualGroupDataSource","executeLocal","records","dataManager","localDataArgs","childElementCount","updateDataList","updatePopupState","updateRemoteData","childNode","remainingItems","sortedData","append","updateListValues","raiseDataBound","isObjectInArray","objectToFind","array","some","keys","every","findListElement","findNode","attribute","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","setStyleAttribute","zIndex","postRender","focusItem","selectedItem","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","sortOrder","getSortedDataSource","groupDataSource","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","display","prepend","setFixedHeader","isDownkey","liHeight","getComputedStyle","getValidLi","getPropertyValue","topIndex","updateGroupHeader","returnExactCount","updateGroupFixedHeader","position","parentElement","offsetTop","isCheckBoxUpdate","virtualUlElement","updateListElements","createVirtualContent","virtualSelectAllData","incrementalLiCollections","incrementalUlElement","incrementalListData","templateID","itemcheck","renderContentTemplate","borderWidth","defaultView","isNaN","liWidth","offsetWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getIndexByValueFilter","selectData","dispatchEvent","evt","createEvent","initEvent","setFields","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","oldProps","setUpdateInitial","updateData","j","onPropertyChanged","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","wrapperElement","removeScrollEvent","addItem","itemIndex","newList","itemsCount","isListboxEmpty","selectedItemValue","itemText","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","validationAttribute","hidden","getDataByValue","_b","_c","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","isTouched","IsScrollerAtEnd","scrollHeight","valueTempElement","opacity","initializeData","activeIndex","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initialRemoteRender","isNotSearchList","isSelected","preventFocus","preventAutoFill","isValidKey","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","pageUp","pageDown","open","close","hide","space","requiredModules","modules","enableVirtualization","args","member","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","onChangeEvent","updateInitialData","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","readonly","defaultAttr","validateAttr","Input","setPlaceholder","dataBind","getAriaAttributes","aria-disabled","role","aria-expanded","aria-live","setEnabled","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","listItems_1","liItem","initValue","updateValues","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","window","windowResize","bindCommonEvent","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","keyConfigs","eventName","keyActionHandler","bindClearEvent","refreshPosition","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","closePopup","currentLi","setHover","hoveredItem","hasAttribute","updateIncrementalItemIndex","updatingincrementalindex","setScrollPosition","selectedLiOffsetTop","spinnerElement","filterInputObj","createSpinner","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","value_2","selectedData","value_3","focusAtFirstElement","value_4","aria-activedescendant","findLi","steps","previousItem","PageUpDownSelection","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","getItem","where","Predicate","previousSelectedLI","aria-describedby","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","isCustomValue","datas","foundIndex","findIndex","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","firstItem","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","filterType","dataType","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","queryElements_1","queryElements_2","queryElements_3","requiresCount","start","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","isNoData","focusIndexItem","setSearchBox","popupElement","createInput","filterBarPlaceholder","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","outerHeight","updateActionCompleteDataValues","tempItemCount","aria-hidden","aria-label","value_5","checkVal","x","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_6","actionCompleteDataUpdate","findEle","highlightedItem","refreshPopup","popupEle","searchBox","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","listitems","searchBoxHeight","maxHeight","offsetValue","getOffsetValue","isEmptyList","textIndent","paddingLeft","borderLeftWidth","createPopup","getFocusElement","checkCollision","popupWidth","outerWidth","collision","X","Y","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","getScrollableParent","scrollHandler","selectedElementID","enable","scrollBottom","aria-owns","aria-controls","inputParent","animModel","popup","animation","destroyPopup","show","Animation","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","isElementInViewport","elementRect","innerHeight","right","innerWidth","border","popupOffset","lastItem","listHeight","paddingBottom","isInitial","isInitialSelection","lastElementValue","currentOffset","nextBottom","nextOffset","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","scrollTo","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","fixedHeader","dataSourceCount","preselectedIndex","updatedCssClassValues","class","setReadOnly","calculateWidth","getListHeight","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","value_7","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","isOpen","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","isFocused","blur","attrArray","clear","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","isCheckAllCalled","isFromFilterChange","keyEntity","isFirstRender","isInitialized","currentText","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","destroyPopupOnHide","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","clearTimeout","filterHandler","isChildObject","expandedNodes","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","remoteDataFilter","getTreeFields","nestedFilter","portals","filteredFields","map","remoteChildFilter","filteredChild","node","isChild","isChildFiltering","isMatchedNode","matchedChildren","filteredItems","matchedDataSource","nestedChildFilter","matchedData","parentId","parentValue","checkValue","tempChild","mouseIn","overAllClear","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","isClearButtonClick","showOverAllClear","isValue","chipWrapper","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","observedArgs","isValueChange","keyEventArgs","showSelectAll","clickHandler","focusedElement","resetValue","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","delimiterChar","getOverflowVal","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","textArr","join","chips","lastChild","updateRemainTemplate","updateDelimMode","getSelectedData","treeSettings","loadOnDemand","multiple","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkElement","changeState","wrapper","state","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","autoCheck","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","isCancelled","POPUP_CLASS","includes","reactCallBack","updatePopupHeight","oldFocussedNode","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","doesItemExist","currentValue_1","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","changeData","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","filterAction","isNoDataElement","minLength","postBackAction","fieldsSettings","itemCreated","highlight","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","isHighlight","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","isProtectedOnChange","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","selectedListData","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","removeSelectedChip","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","predicate","or","and","adaptor","JsonAdaptor","proxy","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","remoteCustomValue","mainData","mainListCollection","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","virtualFilterQuery","isSkip","backCommand","dataChecks","customData","dataItem_1","random","emptyObject_1","JSON","parse","stringify","tempCount","isRemoteSelection","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","collection","previousFocusItem","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","arrowDown","arrowUp","onKeyDown","altKey","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","limit","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","updateCheck","isVirtualElement","elementIndex","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","hideElement","currentValue_2","targetEle_1","isSelectAllTarget","clearAllCallback","element2","addValue","updateWrapperText","textValues","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","multiCompiler","multiselectTemplate","encodeHtmlEntities","title","setClass","classes","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","onListMouseDown","textVal","delim","valueLength","hiddenElementContent","valueItem","listValue","isChipRemove","addValidInputClass","isInitialVirtualData","removeListSelection","isCustomData","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","visibleListElements","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","index_2","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","checkvalue","typedValue","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","listItems_2","checkAutoFocus","CheckBoxSelection","activeLi","activeEle","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","boundPreventListSelection","preventListSelection","stopPropagation","activeLiCount","remLi","ulEle_1","SelectionSettings","ToolbarSettings","ListBox","isDataSourceUpdate","ListBox_1","originalElement","clonedElement","inputString","initLoad","isCustomFiltering","initialSelectedOptions","inputFormName","initWrapper","hiddenSelect","groupHdrs","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","dragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","jsonData","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","filterElem","txtLength","noRecElem","filterWireEvents","inputSearch","isRendered","initToolbarAndStyles","setCheckboxPosition","setFiltering","badge","getDragArgs","dragSelected","isIos","overflow","dragEventArgs","allowDragAll","scrollParent","boundRect","stopTimer","clientY","timer","setInterval","setScrollDown","scrollElem","scrollPixel","isScrollDown","clearInterval","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getArgs","sourceArgs","previousData","destArgs","dragArgs","source","previousIndex","currentIndex","sourceArgs1","destination","targetListObj","ul_1","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","idx","jsonIdx_1","sIdx_1","fLiColl_1","currIdx_1","ul_2","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","sortable","placeHolderElement","dragArgs1","liCollElem","destElem","elems","triggerBeforeItemRender","curData","enableItems","getSelectedItems","updateSelectedOptions","selElems","triggerChange","addItems","removeItems","removeItem","dupData","itemIdx","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","ulList","mainCount","ulEleCount","listindex","valueindex","form","keyDownHandler","focusOutHandler","wireToolbarEvent","formResetHandler","getToolElem","toolbarClickHandler","unwireEvents","clearFilterIconElem","selectHandler","liItems","autocorrect","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","min","prevSelIdx","max","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","toolbarAction","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","tempLiColl","flistboxarray","Number","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","canFocus","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","initRemoteRender","isListResetted","isCollided","lineBreak","isRTE","keyEventName","isSelector","checkAndUpdateInternalComponent","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","isVue","showWaitingSpinner","setSpinnerTemplate","isKeyAction","isUpDownKey","rangetextContent","isRteImage","range","getCurrentRange","startContainer","currentRange","getTextRange","lastWordRange","getLastLetter","lastTwoLetters","Regex","charRegex","isMatchedText","charAt","substring","lastIndexOf","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startOffset","startPos","words","popupEle_1","coordinates_1","initializePopup","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","cssText","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","endOffset","collapse","getClientRects","rectTop","rectLeft","iframes","iframe","contentDocument","iframeRect","doc","windowLeft","pageXOffset","clientLeft","windowTop","pageYOffset","clientTop","Node","TEXT_NODE","span_1","textNodeWidth","fontSize","offsetLeft","isSelectCancel","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","textSuffix","endPos","mentionVal","commonAncestorContainer","deleteContents","frag","createDocumentFragment","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","pointerType","event_1","CustomEvent","detail","click","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","index.DropDownList","Inject","index.VirtualScroll","index.ComboBox","index.AutoComplete","index.MultiSelect","index.CheckBoxSelection","index.ListBox"],"mappings":"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"}
|